CSCI 1101
Intro to Computer Science

Bowdoin College
Fall 2015
Instructors: Eric Chown, Sean Barker, Allen Harper

Course Description

This course will provide an introduction to computational thinking, programming, and the field of computer science in general. Computer science is fundamentally a study of problem solving, not simply computers (or computer programs) themselves. We will consider questions such as (1) what defines computer science, (2) how do we design an algorithm to solve a problem, and (3) how do we translate an algorithm into a computer program?

Over the course of the semester, students will learn the fundamentals of programming using the Python programming language and write a variety of programs during weekly lab assignments and larger projects. Labs will reinforce concepts presented in class that are fundamental to computer science and computation across many fields. Specific topics covered include variables, functions, conditionals, loops, arrays, recursion, and object-oriented programming.

Prerequisites: None. No programming background is expected of students taking CSCI 1101. Students with extensive programming background may wish to instead enroll in CSCI 2101 (Data Structures).

Distribution: This course fulfills the MCSR distribution requirement by teaching students to employ programming and algorithmic problem solving. These skills are broadly applicable across many fields of study.


Instructor (Section A): Eric Chown
Email: echown
Phone: 207-725-3084
Office: Searles 221
Office Hours: Tues/Thurs, 11-12, or by appointment.

Instructor (Section B): Sean Barker
Phone: 207-798-4220
Office: Searles 220
Office Hours: Mon/Tues/Thurs, 1-3, or by appointment.

Instructor (Section C): Allen Harper
Email: aharper
Phone: 207-798-7017
Office: Adams 403
Office Hours: Tues/Thurs, 4-5:30, or by appointment.

TAs / QR Mentors: Drop-in lab hours in Searles 128, 6-8 PM:
Nikki Morin: Sunday
Liam Taylor: Monday
Jasper Houston: Tuesday
Sophie Ardell: Wednesday
Jack Truskowski: Thursday

Course Requirements

Attendance during class and lab sessions, completion of weekly short lab assignments and longer projects, and three exams (two midterms and a final). Evaluation will be as follows:

Regular class participation will contribute positively towards your grade, particularly in borderline cases.

Most labs and projects are not designed to be completed during scheduled lab meetings and will require significant work outside of class to complete. Labs are to be submitted using the CodeRunner system and are due at 10 PM the night before your section's next lab meeting.

Late Policy: As concepts covered in the course are highly cumulative, it is crucial that you do not fall behind on assignments. In general, late submissions are not accepted unless an extension is granted by the instructor well in advance of the due date (not the night of the deadline!). Plan ahead and don't wait until the last minute to start working!

Textbook (optional)


P. Gries, J. Campbell, and J. Montojo. Practical Programming: An Introduction to Computer Science Using Python, 2nd edition (2013). Available at Amazon or elsewhere.

The textbook is optional but will roughly follow the schedule of the course.

Class Information

Each class section meets three times a week (or twice with one double session). While one meeting is officially designated a 'lab', regular class sessions may be used as labs or vice versa.

All classes (lab or otherwise) meet in Searles 128.

Section A: Monday and Wednesday
Monday 1:00 PM - 4:00 PM (double session)
Wednesday 1:00 PM - 2:25 PM
Lab normally second half of Monday meeting.

Section B: Tuesday, Wednesday, and Thursday
10:00 AM - 11:25 AM
Lab normally on Wednesday.

Section C: Tuesday, Thursday, and Friday
Tuesday and Thursday 11:30 AM - 12:55 PM
Friday 10:00 AM - 11:25 AM
Lab normally on Friday.

Final Exams

Section A: December 17, 9:00 am - 12:00 pm, Searles 126

Section B: December 18, 2:00 pm - 5:00 pm, Searles 128

Section C: December 19, 9:00 am - 12:00 pm, Searles 128

Electronic Device Policy

Computers will be extensively used for in-class exercises, labs, and exams. Use of personal laptops is permitted for these or other class-related purposes. Cell phones should be silenced and put away during class to avoid disruptions.

No electronic devices, including computers, phones, or calculators, are permitted during exams unless specifically indicated by the instructor.

Collaboration Policy and Honor Code

You are expected to follow Bowdoin's Computer Use Policy and its Academic Honor Code. No collaboration whatsoever is permitted on exams. For other assignments, you are encouraged to discuss ideas and techniques broadly with other class members, but not specifics of assigned problems (except as part of group projects). Discussions should be limited to questions that can be asked and answered without using any written medium (e.g. pencil and paper or email). In other words, at no time should a student read any code written by another student unless they are part of the same group. Sharing of code or intermediate designs is expressly prohibited. Remember that providing help beyond what is allowed is as much of an infraction as receiving help. This includes sharing your work with future students after you have completed the course yourself. Automated plagiarism detection software may be used in this course, and violations are much easier to detect than students often think.

Use of the internet (e.g., Google) for reference purposes is allowed on lab assignments, such as looking up the use of a particular library function. Blindly copying sections of code found online, however, is not allowed, and you should never submit code that you do not understand or would not be able to clearly explain. It is permissible to use software and materials available from other sources (understanding that you get no credit for using the work of others on those parts of your projects) as long as: 1) You acknowledge explicitly which aspects of your assignment were taken from other sources and what those sources are; 2) The materials are freely and legally available; and 3) The material was not created by a student at Bowdoin as part of this course this year or in prior years. To be absolutely clear, if you turn in someone else's work, you will not receive any credit for it, but if it is properly acknowledged, at least it will not at be considered a breach of this policy.

In the interest of fairness to all students, violations of this policy are grounds to initiate an action that would come before the Judicial Board. If you have any questions about this policy, please do not hesitate to ask for clarification.