Introduction to Computer Science

For the Deep Springs students learning C and Python using Harvard’s CS50x materials while we are all remote during Term 4.

Overview

Every walk of life uses computer science, either directly or indirectly. Knowing what computers can and cannot do and what it takes to program them is a lifting of a veil that the majority of people never peer behind. Those that have a mental model of what computers do can utilize computers well, and utilize people that write software for computers far more realistically. We will be following Harvard’s CS50x materials. CS50x is a full-semester course comprising 11 weeks plus a special project. For Deep Springs Term 4 (a half-semester) we will be doing Weeks 0 to 6 of CS50x (seven weeks).

A large part of the point and advantage of using Harvard’s CS50x materials while remote during Term 4 is that (1) all of their materials are on-line, (2) the course is self-paced and you work on it whenever you want, and (3) it is popular and widely recognized. However, point 2 is not applicable if we are going to do it in a cohort.

The bulk of our course will be spent learning C, which is the foundation of all modern operating systems. As a warmup to C, Harvard has a little prelude in a language called Scratch. Because Python is practically more important than C for the majority of software developers and computer users, we will conclude with a short introduction to Python. Python hides so much of what the computer has to do to operate on data that Python hides so much of what the computer has to do to operate on data that many computer scientists judge it to be worthwhile to first learn a lower-level language like C, even if you never use it again, before turning to Python.

Schedule

Below is a schedule for getting all of the C and Python work in CS50 done together in the time between Terms 3 and 5. We will not be doing the CS50x surveys of SQL, HTML, CSS, or Flask. CS50 is a full-semester course. For Deep Springs Term 4 (a half-semester) we will be doing Weeks 0 to 6 of CS50.

Problem Sets

You will be doing all the problem sets Harvard requires for Weeks 0 through 6 and demonstrate that you have submitted them successfully. Essentially, Harvard runs some programs on your submissions (check50, style50, and valgrind), and if these programs don’t flag any problems in your submissions, we can assume they are bug-free.

Meetings

In addition to David Malan’s lectures which run well over two hours each week, and labs that are designed to help you learn the material in preparation for problem sets, our small cohort will have weekly on-line meetings from Jan. 2 to Feb. 19. The idea of the regularly-scheduled on-line meetings is to help maintain our pace and energy while doing the course online, and more specifically to have 1 to 1 1/2 hours to discuss each week’s material and any sticking points.

You can schedule additional online meetings with me (or each other!) to hash out challenges you will likely hit when debugging your problem set solutions.

Email

Any time during Term 4 is fair game to send our cohort email asking about that week’s material. I have set up an email group specifically for this. Avoid getting ahead or behind when sending emails to the group so that we are more cohesive.

Some supplementary resources will be circulated by email.