Computer Science 1 - Summer Challenge '23

Description

The goal of this course is to introduce the students to the big picture of the computer science with an important constraint: teaching nothing as a black box.

Given the huge multitude of online resources to learn how to code any specific task, this workshop's focus would be in the theoretical, but intuitive, concepts of computing; the attendees are called to discover the simplicity of the computing internals, from the restricted set of machine instructions to the - ideal - simplicity in a CPU cycle and on top of that build their tools to make the most of a computer - either a tiny microcontroller or the largest supercomputing cluster.

Each lecture will be structured with the duality of theoretical and practical; on the theoretical side the concepts are planned to be presented as a journey from a mere ideal Turing machine, through the physicality of the current in the processor to the illusion of parallelism provided by an operative system.

On the practical front the course will start with some warming up exercises; later a component of challenges - given the name - and team working will be proposed through the three games; those will part of the final presentation.

Outcomes

At the end of the course the students will know a little about how to program in Python and some basic C; but more importantly they should be able to take a problem and think of a computational solution, to be implemented in any language.

Moreover, the attendees will have the introductory concepts of multiple fields within computer science.

Calendar



Add to BU Google Calendar Download in .ical format

Both classrooms assigned to this course are in CAS (725 Commonwealth Ave)

Note: this

Date Classroom Concepts Hands on
June 20th 273 Computation; problems and their solution Setting up the environment; variables; hello world
June 21th 273 Processor and instructions Conditional executions and iterations; non-intuitive implementations
June 22th 273 Memory, addresses, representations Game 0: a space odyssey
June 23th 273 Languages, compilation and interpretation Functions and types; Hello world - again - but in C, compilation, Makefile
June 26th 273 Structures, objects, classes, messages Refactoring, recursion, exceptions
June 27th 273 Operative systems, events, networks I Game 1: battleship! [team vs team]
June 28th 273 Networks II, User interaction Design simple GUI - with jupyter widget
June 29th 273 Complexity, graphs, security - the remaining miscellaneous Game 10: Visual battle! [team vs team]
June 30th 216

Final presentation

About me



Francesco Ciraolo
PhD student - Computer Science
Cyber-physical systems

Email: fciraolo at bu dot edu