CSCI 150 - Foundations of Computer Science

Hendrix College

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

Lab L1: R 8:10am - 11:00am (L4)
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

Instructor: Dr. Mark Goadrich

Contact Info
MCReynolds 313

MW 10:30 - 11:45, T 9:30 - 11, F 1-2pm
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.6 PyCharm Edu

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 and Homework

Throughout the semester, there will be short quizzes and homework exercises covering material from the previous class. Each quiz and homework exercise will be awarded a certain number of points. A total of 300 points will be available over the course of the semester. These quizzes, participation, and homework will comprise 15% of your final grade. Earning 150 points suffices for full credit.

HW 0Who are you?Aug 255
HW 1Communication and OrigamiAug 2812
QUIZ 1Quiz 1Aug 288
HW 2Boolean Logic PuzzlesSep 610
QUIZ 2Quiz 2Sep 65
QUIZ 3Quiz 3Sep 1110
PRACTICE EXAM 1Exam 1 PracticeSep 1315
HW 3DNA StringsSep 2912
HW 4While ExercisesSep 2910
HW 5For ExercisesOct 618
PRACTICE EXAM 2Exam 2 PracticeOct 915
HW 6Functional PracticeNov 315
HW 7Zen ReadingsOct 270
QUIZ 4Quiz 4Nov 310
PRACTICE EXAM 3Exam 3 PracticeNov 1715


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 the Snoddy Computer Lab, in the Bailey Library.

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
5Guess My Number
6Mutation is the Word
7Caesar's Secrets
8Fractal Recursion
9Movie Reviews
10Die Hard III
13Civic Data Mashup


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.

1Civic Assistance Application 5%Sep 17Sep 25
2Word Games 10%Oct 11Oct 25
3Your Choice 20%Nov 6Finals Day (Dec 11)


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, Participation, Homework15%
Exam 15%
Exam 210%
Exam 310%

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