Course Structure

This course is divided into six modules:

  • M1: Introduction to Programming

  • M2: Functions

  • M3: Dictionaries & File Basics

  • M4: Classes and Objects

  • M5: Numpy

  • M6: Recursion

Each of these modules follows the same general structure, summarized below:

_images/organization-summary.png

A module begins with a series of lectures that introduce basic concepts related to that module. Additionally, there will be book chapters that you can read to supplement what is covered in the lectures.

After learning the basic concepts in class, you will be able to practice your programming skills through two types of coursework:

  • Short Exercises: The goal of these exercises is to provide you with short and focused opportunities to practice the concepts and skills being covered in the module. You must work on these individually, and must submit them for grading.

  • Team Tutorials: Tutorials that will walk you through the application of basic concepts and skills from the module. We strongly encourage you to work through it with other students in the class. Unlike the short exercises, this work is not graded.

Next, you will apply the skills you have learned towards solving a more complex problem in a graded Programming Assignment. The Monday discussion sessions are used to provide additional support for these programming assignments.

A module typically spans three weeks, and follows this general schedule:

_images/organization-week.png

Please note that most of the modules will overlap in time. In particular, in most weeks you will be working on the programming assignment for one module, and the short exercises for the next module.

For a detailed calendar, including a list of all the deadlines throughout the quarter, please see the Course Calendar.

Timed Exercises

On weeks 6 and 8, we will post a series of programming problems that must be completed online, and where you will have a limited amount of time to complete each problem. The goal of these problems is to assess your computational thinking skills, and your fluency in programming.

These exercises are open-book and open-Internet, and you are allowed to use your computer (and the Python interpreter). However, communication with anyone else (not just students in the class) is strictly forbidden.

Final Exam

During finals week, we will give a paper-and-pencil exam where you will have to solve a series of programming problems. While the exam is open-book and open-notes, you will not be allowed to use a computer during the exam, and the exam will be carried out under proctored conditions. The goal of the exam is to assess whether you have achieved a superior level of fluency and comfort in programming, to the point that you are able to solve complex programming problems even without the assistance of a computer.