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
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.
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:
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.
|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.
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.
|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).
|Chapter 7, C++basics.ppt|
|Oct 6||Lab 5 (C++ basics)|
Exam return and discussion.
Selection sort (in-class lab work).
|Oct 18||Finish selection sort.
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
|Oct 20||Lab 6 (Functions, characters and cryptography using Caesar's cypher)|
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)|
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.
|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.
|Dec 16 at 2pm||FINAL EXAM||All material|
Students are expected to follow the Bowdoin Computer Use Policy and the Academic Honor Code.