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.

  • Collaborative Study Guides: A tutorial-style study guide 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.

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

Exams

There will be two exams: one held during fifth week and one during finals week. The dates, (evening) times, and locations of these exams will be announced as soon as we have secured rooms from the registar’s office.

The exams will be a paper-and-pencil exams where you will have to solve a series of programming problems. While they will be open-book and open-notes, you will not be allowed to use a computer or any other electronic device, and they will be carried out under proctored conditions. The goal of the exams 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.