[Bowdoin Computer Science]

CSci 107: Introduction to Computer Science

Fall 2004

Mon, Wed 11:30 - 12:55 in Searles 126
Lab Tue 2:30 - 3:55 in Searles 128

Labs | Students | Term project: Service learning | Social issues in CS

NEW: The websites created by the students for the service learning projects:
AAAW (by Greg Kelsey)
Oasis (by John Draghi, Matt Murchison)
Harpswell Nursery (by Hunain Khaleeli, Tracy McKay, Becky Sargent)
Stevens Home (by John Hall, Ben Rachlin)


This course provides a broad overview of computer science and an introduction to algorithmic thinking and programming. You will learn about some of the basic areas of computer science: algorithms (the foundation of computer science), how to design an algorithm and write a program to solve a problem on the computer, what goes on inside a computer, how your program is translated to a form the computer can "understand", models of computers (Turing machines), the limits of computability (can a computer solve anything?) and social issues caused by computers. Weekly labs provide experiments with concepts presented in class. Programming is done in C++.

This course is required for majors, but is a self-contained course designed to appeal to non-majors looking for a general introduction to computer science.

Prerequisites: None! No previous knowledge of computer science is required.

Instructor: Laura Toma
Office: 219 Searles Hall
Email: ltomaATbowdoin.edu (replace AT with @)

Office hours: M, W 4-5pm, Tue after lab. Send me an email to set up a different time. For quick questions you can come to my office anytime.

Class Email: csci107BATbowdoin.edu (replace AT with @)

Class webpage: http://www.bowdoin.edu/~ltoma/teaching/cs107/fall04/
Bowdoin class webpage: http://academic.bowdoin.edu/courses/f04/csci107

Main topics:

Course material:

Labs:
There will be 12 labs throughout the semester. Each lab assignment will be due on the following Tuesday before class. This is a hard deadline. No extensions are possible except with Dean's excuse. You can access the Labs online from here.

Final Project:
For the term project you can choose to design a basic webpage for a non-profit community organization (service learning project) or to do a presentation on a social topic of computer science. Guidelines are below:

Exams:
There are 3 scheduled exams: Sept 29, Nov 3 and Dec 16. All exams are open-book. If you cannot be present at either one of the exams you will need a Dean's excuse.

Grading policy

Attendance is required for all scheduled class and lab meetings.

Course Outline

Date Topic Notes, Reading
Sept 6 Introduction and overview.
What is (not) Computer Science?
What is an algorithm?
L1.ppt, Chapter 1
Sept 7 Lab 1 (Basics and webpage)
Sept 8, 13 Algorithm design.
Pseudocode elements.
Adding two m-digit numbers.
Sequential search and variations (computing smallest, largest, sum, average, etc).
A search application in bioinformatics (pattern matching).
L2.ppt, L3.ppt, Chapter 2
Sept 14 Lab 2 (Algorithms)
Sept 15 A search application in bioinformatics (pattern matching). L4.ppt, Chapter 2
Sept 20, 21 Efficiency of algorithms.
Worst-case, best-case, average-case efficiency.
Order of magnitude.
Analysis of sequential search.
Data cleanup algorithms (copy-over, shuffle-left, converging pointers).
L5.ppt, L6.ppt, Chapter 3
Sept 22 Lab 3 (Algorithms and efficiency)
Sept 27 Binary search. L7.ppt, Chapter 3
Sept 28 Lab 4 (Algorithms and efficiency)
Sept 29 Selection sort, algorithm and analysis.
Binary search vs. sequential search.
Introduction to C++.
The infamous Hello world! program.
Chapter 7
Oct 4 EXAM 1 Chapter 1, 2, 3, practice-exam1.doc
Oct 5 Introduction to C++.
Basic types and operations (I/O, loops, if-then-else).
Arrays.
Chapter 7, C++basics.ppt
Oct 6 Lab 5 (C++ basics)
Oct 13 C++.
Exam return and discussion.
Selection sort (in-class lab work).
Oct 18 Finish selection sort.
Functions.
fun1.cpp, fun2.cpp,
Chapter 7
start reading on final project options: service | social
Oct 19 Functions and parameter passing.
fun3.cpp, fun4.cpp, fun5.cpp, fun6.cpp, char1.cpp, char2.cpp
Chapter 7
Oct 20 Lab 6 (Functions, characters and cryptography using Caesar's cypher)
Oct 25 Functions.
In-class work on Caesar's cypher.
Function to check whether a number is prime.
Oct 26 Functions and parameter passing.
Pass by value and pass by reference.
Exercise: Bank account
Oct 27 Lab 7 (Functions, parameter passing: banker and poetry problems)
Nov 1 Functions and parameter passing. A red-cell count histogram program.
Nov 2 Exam2 review and practice problems.
Nov 3 EXAM 2 C++ programming (Chapter 7 and handouts)
Nov 8 Lab 8 (C++ Functions: Playing Craps)
Nov 9 Recursion.
Finding min, sum, palindrome.
Nov 10, 15, 16 Computer Organisation
Binary numbers and conversions.
Boolean logic, logic gates, logic circuits.
Von Neumann architecture. A simple computer model and machine code. The fetch-decode-execute cycle.
Chapter 4,5,6
Nov 17 Lab 9 (C++ recursion)
Nov 22, 23 Turing machines, computability, complexity classes. Chapter 10
Nov 29 Applications of Computer Science: GIS and Robotics.
Nov 30, Dec 1, 6,7 Service learning and social issues: Student presentations. Chapter 14, Guidelines: service | social
Dec 8 Review, discussion and evaluations.
Practice problems
Dec 16 at 2pm FINAL EXAM All material

Students are expected to follow the Bowdoin Computer Use Policy and the Academic Honor Code.