by Allen Downey, 2012
Olin College, MA
This textbook is open-source; we have reorganized and edited it to match our course syllabus.
This class is BYOL. Bring a laptop computer to class with you every day,
unless there is a test. We have a small number of computers available for students who
are unable to do so. We will do programming exercises every class period.
Introduction to solving computational problems, including the fundamentals of computer
programming. Topics include imperative programming constructs (variables, loops,
conditionals, functions, recursion), basic object-oriented constructs (classes, objects),
and some fundamental algorithms and data structures (dictionaries, arrays, linked lists,
basic sorting). Student learn these concepts through studying the Python programming
At the end of the course, you will be expected to be able to:
- Read, understand and execute a computer program written in Python.
- Read a set of requirements for a computer program in English,
and write a short Python program (100 lines or less) that corresponds
- Test a Python program and identify and fix programming errors.
- Identify some errors in a Python program without testing it.
- Without using a computer, write a very short Python code
fragment (10 lines or less) that correctly implements a set of
- Understand and apply variables, loops, strings, lists, conditionals, and functions.
- Write programs to perform mathematical calculations.
- Understand the concept of a module.
- Write a Python program that is separated into at least two modules.
- Understand the concepts of class and object, and distinguish between them.
- Write a Python program including objects of at least one student-designed class.
- Write and understand appropriate comments in a Python program.
- Understand the concept of an algorithm and compare the efficiency of
different algorithms for a simple task.
It is the policy of Hendrix College to accommodate students with disabilities, pursuant
to federal and state law. Students should contact Julie Brown in the Office of Academic
Success (505.2954; email@example.com) to begin the accommodation process. Any student
seeking accommodation in relation to a recognized disability should inform the instructor
at the beginning of the course.
Please refer to the
CSCI Academic Integrity Policy
After assignments are returned, you are welcome to revise and resubmit your work. Each submitted revision will be graded anew, the original and revised grades will be averaged to produce a new grade for that assignment. Revisions may be submitted anytime until the start of the final exam period.
No late work will be accepted.
Any work not submitted on time is a zero. However, you may submit a solution after the deadline to qualify under the revision policy. In effect, this means that late work can earn up to half credit.
We will be covering most of the material in the textbook, approximately one new chapter
You should view your textbook as another perspective on the material
presented in class and covered
in the labs. We will also be using additional supplemental material such as
and background material for the lab assignments.
Readings will be assigned before material will be covered in class. You are expected
to review the material and come to class prepared.
- Chapter 1 - August 26
- Chapter 2 - August 29
- Chapter 3 - August 29
- Chapter 4 - September 2
- Chapter 5 - September 19
- Chapter 6 - September 21
- Chapter 7 - September 26
- Chapter 8 - September 26
- Chapter 9 - September 30
- Chapter 10 - October 5
- Chapter 11 - October 17
- Chapter 12 - October 21
- Chapter 14 - October 26
- Chapter 15 - November 2
- Chapter 16 - November 4
- Chapter 17 - November 9
- Chapter 18 - November 11
Quizzes and Participation
Sporadically throughout the semester, there will be short quizzes covering
material from the
You are encouraged to attend class and actively participate in discussions every day
(answering questions, asking questions,
presenting material, etc.)
These quizzes, participation, and in class homework
will comprise 15% of your final grade.
Much of your experience with programming in this course will be through weekly labs,
which will comprise 25% of your final grade. Each lab will be assigned in lab with
time allotted to work through the materials, and will be due at the start of the next lab.
All labs are weighted equally within the lab portion
of your final grade.
Lab attendance is required.
Labs take place in either
the Snoddy Computer Lab, in the Bailey Library, or in WAC 249.
You will be handing in your lab work
Instructions to do so will be included in each lab.
On these labs, you may work with a partner on the lab assignments if you choose. Their name must be
listed on any code you hand in as joint work.
You will have three projects in this course, one about every five weeks, for a total of
35% of your final grade. These projects will cover concepts we have
discussed in class and in labs, and will be due approximately one week
after they are assigned.
You must work individually on these projects.
You may discuss concepts and ideas with your classmates, but the code you turn in
must be your own. You will be graded not only on correctness, but also technique,
documentation and evaluation
of your solution. Further details on the grading standards and handin instructions
for each project will be given when they are assigned.
There will be three in-class exams, the first worth 5% and the last two each worth 10% of your final grade. They
will consist of short answer along with writing and debugging code.
- Exam 1: Sep 16, covering input/output, math, numerical data and conditionals
- Exam 2: Oct 12, covering functions, while and for loops, lists and strings
- Exam 3: Nov 21, covering recursion, dictionaries and object-oriented programming
Your final grade for this course will be based on the Labs, Projects, Quizzes, Exams and
Participation described above.
|Quizzes and Participation||15%|
© Mark Goadrich, Gabe Ferrer, Brent Yorgey, Hendrix College