CS 7 An Introduction to Programming and Computer Science

Eric Khumalo Photo




Course Description

CS 7 is an introduction to computer science, with particular emphasis on The Structure and Interpretation of Computer Programs from a programmer's point of view. This course concentrates mostly on the idea of abstraction, allowing the programmer to think in terms appropriate to the problem.

In CS 7, we are interested in teaching you about programming, not about how to use one particular programming language. We consider a series of techniques for controlling program complexity, such as functional programming, data abstraction, and object-oriented programming. Mastery of a particular programming language is a very useful side effect of studying these general techniques. However, our hope is that once you have learned the essence of programming, you will find that picking up a new programming language is but a few days' work.

Programming Language

CS7 uses the Python 3 programming language. Python is a popular language in both industry and academia. It is also particularly well-suited to the task of exploring the topics taught in this course. It is an open-source language developed by a large volunteer community that prides itself on the diversity of its contributors.

Our choice in using this language is primarily motivated by the strength of Python's programming community, which you will soon join as you learn the language. Python also has excellent library support for a vast range of application areas. Knowing Python will help you pursue your future programming interests, wherever they may lead you.

Prerequisites

Knowledge of Advanced Level Mathematics is a corequisite for CS7. (That is, it may be taken concurrently.)

There is no formal programming-related prerequisites for admission to CS7. There is no need for you to be familiar with any particular programming language. If you have some knowledge in any programming language and some Math, then you are certainly ready for CS7.

Course Materials

There is no required textbook for this course. Our primary text will be a series of lecture notes based on the classic book, Composing Programs. Lecture notes will be posted to the course website.

Homework/Project Parties

In addition to the lectures, we might have additional project and homework parties.

You are expected to attend all class lectures or watch all recordings. We will track attendance and assign points for certification. Communicate with course staff if you might have difficulties.

Ask Questions!

Your first and most important resource for help in learning the material in this course is your fellow students. Work closely with your project partner. You are responsible for helping each other learn.

If you have questions that others might have as well, regarding projects, homeworks, course policies, etc., post your questions to our Piazza, the course messaging service.

The instructor and other Teaching Assistants are available to answer questions. You may post on piazza, whatsApp discussion session, drop in during office hours, make appointments for other times, or email us.

Projects and Homeworks

Each week there will be problems assigned for you to work on, most of which will involve writing and debugging programs. These assignments come in three categories:

Laboratory exercises are short, relatively simple exercises designed to introduce a new topic.

Homework assignments are slightly more involved versions of lab exercises, meant to illustrate and explore new topics. There will be 6 homework assignments for the course. You are encouraged to discuss the homework with other students, but your final solution should be developed either alone or with one partner.

Projects are larger assignments intended to teach you how to combine ideas from the course in interesting ways. There are three very intense projects for the course. You are encouraged to complete projects in pairs; your partner should be another student in the class whom you can easily collaborate with.

The purpose of the lab is for you to learn the course material, not to prove that you already know it. Therefore, the weekly labs are not graded on the correctness of your solutions, but on effort. You will get full credit for an entirely wrong answer that shows reasonable effort! Homeworks will be graded automatically.

The three programming projects are graded on the correctness and clarity of your solutions. If you work with a partner (which you should), work together to ensure that both group members understand the complete program you create.

Projects and homeworks will be submitted online via Gradescope.

For the benefit of others, do not make your solutions publicly available.

Tests and Grading

Your course grade is computed using a point system with a total of 100 points, with the following distribution.

  Three projects, worth a total of 50 points

  One midterm exam, each worth 10 points.

  One final exam, worth 10 points.

  Homework worth a total of 15 points

  Lab worth a total of 10 points

  Participation, worth a total of 5 points

Midterm will be held on a weekend. Details of this policy will be released as the exam approaches.

Midterm will be held on Sat & Sun July 6 & 7! If you are not available from 4PM to 7 PM on those days, notify the instructor immediately.

Each letter grade for the course corresponds to a range of scores:

A+  97+         A  93-96       A-  90-92
B+  87-89       B  83-86       B-  80-82
C+  77-79       C  73-76       C-  70-72
D+  67-69       D  63-66       D-  60-62
F   0-59

This grading formula implies that there is no curve; your grade will depend only on how well you do, and not on how well everyone else does.

Certification will be provided for grade C- and above.

Learning Cooperatively

We encourage you to discuss all of the course activities with your friends and classmates as you are working on them. You will definitely learn more in this class if you work with others than if you do not. Ask questions, answer questions, and share ideas liberally.

Since you're working collaboratively, keep your project partner and the Instructor informed. If some medical or personal emergency takes you away from the course for an extended period, or if you decide to drop the course for any reason, please don't just disappear silently! You should inform your project partner and the Instructor, so that nobody is depending on you to do something you can't finish.

Late Policy

If you cannot turn in an assignment on time, contact the Instructor and partner as early as possible. Late project submission requires approval by the Instructor. Exceptions may be made for extraordinary circumstances.

A Parting Thought

We're very excited to have such a large and enthusiastic group of students for our second course offering of CS 7. We want all of you to learn as much as you can from here. Welcome to CS 7!