CSCI 150 - Foundations of Computer Science

Hendrix College
MCReynolds 315
01 - MTWF 11:10am - 12:00pm
02 - MWF 1:10pm - 2:00pm T 12:10pm - 1:00pm

Instructor: Dr. Mark Goadrich

Contact Info

Office Hours
T 2-4pm W 3-4pm R 9-11am
or by appointment

Overview | Syllabus | Labs | Projects | Exams | Grading

Course Details


How to Think Like a (Python) Programmer
by Allen Downey, 2007
Olin College, MA
This textbook is open-source; I have reorganized and edited it to match our course syllabus.

Software and Hardware

Python Scratch Arduino App Inventor

This class is BYOL. Bring a laptop computer to class with you every day, unless there is a test. I 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:

Quizzes and Participation

Sporadically throughout the semester, there will be short quizzes covering material from the previous class. These quizzes will comprise 6% of your final grade.

You are encouraged to attend class and participate in discussions every day. Active participation in class discussions will comprise another 5% of your final grade. This will be awarded for answering questions, asking questions, presenting material, etc.


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

As stated in the Hendrix Academic Integrity Policy, all students have agreed to adhere to the following principles: I will provide guidelines for the amount of cooperation allowed on each assignment as they are posted. In general, you may discuss topics with other students and tutors, but all code you write must be your own, and you must be able to explain to me how it works. In this course, it is a violation of the honor code to look at code from other students.


Extensions and rescheduling for labs, projects, exams and quizzes are only given when circumstances beyond your control (e.g. being sick, choir or sports travel) prevent you from completing a project on time. You must notify me either by email or phone of your circumstances well in advance of the due date. No extensions are given for requests made within three days of the due date.


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.


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 class with time allotted to work through the materials, and will be due at the beginning of the next class period. All labs are weighted equally within the Lab portion of your final grade.

You will be handing in your programming lab work via Moodle, and written portions through Google Documents. Instructions to do so will be included in each lab.

On some 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.

0Who are you?Aug 26Aug 27
1Communication and OrigamiAug 26Aug 27
2Building Blocks of ProgrammingAug 29Sep 2
3Kepler and NewtonSep 5Sep 8
4Boolean Logic PuzzlesSep 9Sep 10
5Edible Mushroom DetectorSept 12Sept 15
6Curiouser and CuriouserSept 16Sept 17
7Arduino CircuitsSept 22Sept 23
8Guess My NumberSept 24Sep 29
9Mutation is the WordSept 30Oct 3
10Caesar's SecretsOct 8Oct 13
11CodingBat PracticeOct 4Oct 14
12Fractal RecursionOct 22Oct 24
13Gibberish GeneratorOct 28Oct 31
14Zen ReadingsOct 29Oct 31
15App InventorNov 3Nov 7
16Die Hard IIINov 10Nov 11
17Mechanical Pencil Section01 Section02Nov 11Nov 12
18ElizaNov 24Nov 29


You will have three projects in this course, one about every five weeks, for a total of 34% of your final grade. These projects will cover concepts we have discussed in class and in labs, and will be due approximately two weeks 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.

1This Day in History 5%Sept 17Sep 26
2Bulls and Cows 10%Oct 20Oct 29
3Your Choice 19%Nov 25Dec ???


There will be three in-class exams, 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
Exam 110%
Exam 210%
Exam 310%

© Mark Goadrich, Hendrix College