CSCI 150 - Foundations of Computer Science

Hendrix College

Lec 01: MWF 8:10am - 9:00am (A1)
MCReynolds 110

Lab L1: R 1:10pm - 4:00pm (L9)
Bailey Library Snoddy Lab

Lec 02: MWF 11:10am - 12:00pm (A4)
MCReynolds 315

Lab L2: W 1:10pm - 4:00pm (L8)
Bailey Library Snoddy Lab

Lab L3: R 8:10am - 11:00am (L4)
WAC 249

Instructor: Dr. Mark Goadrich

Contact Info
MCReynolds 313

Office hours: MWF 9:30 - 10:30 am, T 8-9am
or by appointment

Instructor: Dr. Gabriel Ferrer

Contact Info
MCReynolds 312

Office hours:
By appointment:

Overview | Syllabus | Labs | Projects | Exams | Grading

Course Details


Think Python
by Allen Downey, 2012
Olin College, MA
This textbook is open-source; we have reorganized and edited it to match our course syllabus.


Python 3.5

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 language.

At the end of the course, you will be expected to be able to:


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; 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.

Academic Honor

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 each week. 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 relevant web-pages 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.

Quizzes and Participation

Sporadically throughout the semester, there will be short quizzes covering material from the previous class. 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.

0Who are you?Aug 24
1Communication and OrigamiAug 29
2Boolean Logic PuzzlesSep 7
3Zen Readings - Section 1


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 via Moodle. 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.

2Kepler and Newton
3Diagnosing Heart Disease
4Today in History
5Mutation is the Word
6Going on Vacation
7Caesar's Secrets
8Fractal Recursion
9Movie Reviews
10Die Hard III
13World-Wide Web


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.

1Question-Answer 5%Sep 18Sep 26
2Word Games 10%Oct 7Oct 19
3Your Choice 20%Nov 11Finals Day (Dec 12)


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.


Your final grade for this course will be based on the Labs, Projects, Quizzes, Exams and Participation described above.
Grading Scale
Quizzes and Participation15%
Exam 15%
Exam 210%
Exam 310%

© Mark Goadrich, Gabe Ferrer, Brent Yorgey, Hendrix College