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