[Bowdoin Computer Science]

CSci 107: Introduction to Computer Science

Spring 2005

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

The websites created by the students for their final (service learning) project:

Midcoast Hunger Prevention Program (Mat Neidlinger, Adam Skuse)
Maine Civil Liberties Union: Our Neighbors, Our Selves" (Caytlin Rosa)
Moving Spirit (Gordon Convery, Charles Legg)
Pejepscot Terracce (James Harris, Charles Rusell, Fei Tan)
Brunswick-Trinidad Sister City Association (Markell Beale, Damien Poles)


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: Mon, Wed 4-5pm. Send me an email to set up a different time. For quick questions you can come to my office anytime.

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

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

Main topics:

Course textbook:

Note that none of the books are required. I will distribute lecture notes and handouts in class. We will be using a few chapters of Schneider and Gersting to look at algorithms and efficiency, and a few chapters of the programming book for the C++ programming part of the course. There will be reserve copies of these books available in the library. Technically the lecture notes and handouts distributed in class will be sufficient, however, you may find it helpful to own copies of one or both of these books.

Labs:
There will be 10 labs throughout the semester. Since there are no other assignments besides labs, the labs are not designed to be finished during lab time. Each lab assignment will be due on the following Tuesday before class (unless otherwise decided in class). Lab deadlines are hard deadlines. No extensions are possible except with Dean's excuse. You can access the Labs online from here.

Cheating policy:
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). This means that 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. The same rules apply once you have finished the course - sharing your code with other students will be considered a violation of Bowdoin's honor code. Violation of this policy is grounds for me to initiate an action that would be filed with the Dean's office and would come before the J Board. If you have any questions about this policy, PLEASE do not hesitate to contact me. This will be a zero-tolerance policy.

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. 3) The material was not created by a student at Bowdoin as part of this course this year or in prior years.

All write-ups, reviews, documentation, and other written material must be original and may not be derived from other sources.

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: Febr 21, April 4 and May 18. 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


Function to check whether a number is prime.
Date Topic Notes, Reading
Jan 24 Introduction and overview.
What is (not) Computer Science?
What is an algorithm?
L1.ppt, GS:Chapter 1
Jan 25 Lab 1 (Basics and webpage)
Jan 26, 31 Designing algorithms.
Pseudocode elements.
Computing 1+2+...+n.
Gauss formula.
Adding two m-digit numbers.
Sequential search and variations (computing smallest, largest, sum, average, etc).
L2.ppt, L3.ppt, GS:Chapter 2
Febr 1 A search application in bioinformatics (pattern matching). L4.ppt, GS:Chapter 2
Febr 2 Lab 2 (Algorithms)
Febr 7, 8 Efficiency of algorithms.
Worst-case, best-case, average-case efficiency and order of magnitude.
Analysis of sequential search, find largest, find smallest, find average.
Data cleanup algorithms (copy-over, shuffle-left, converging pointers).
Orders of magnitude 1, n, n2
L5.ppt GS:Chapter 3
Febr 9 Lab 3 (Algorithms and efficiency)
Febr 14, 15 Data cleanup algorithms (copy-over, shuffle-left, converging pointers) and analysis.
Binary search, algorithm and analysis.
Binary search vs. sequential search.
Selection sort, algorithm and analysis.
L6-7.ppt, L8.ppt, GS:Chapter 3
Febr 16 Lab 4 (Algorithms and efficiency)
Febr 21 Finish selection sort and analysis.
Exam 1 review and practice problems.
Introduction to C++.
The infamous Hello world! program.
Basic types and operations (I/O, loops, if-then-else).
practice-exam1.doc
GS:Chapter 7, C++basics.ppt
Febr 22 EXAM 1 (Algorithms and efficiency) GS:Chapter 1, 2, 3
Febr 23 Basic types and operations (Input/Output, if-then-else, loops).
Class work: loops (a program that asks "Do you want to use this program?" ...)
Lawlor: chap 2,3,4,5
The assignment statement
The if statement
The while statement
February 28 Exam return and discussion.
Arrays and examples: array.cpp
Lawlor: chap 2,3,4,5
Arrays
March 1 Lab 5 (C++ basics)
March 2 Class work: selection sort. Lawlor: chap 2,3,4,5
March 7 Functions.
Exaples: fun1.cpp, circle.cpp, feet2inches.cpp, fun2.cpp
array examples: array.cpp, arraysum.cpp, ssearch.cpp
Lawlor: chap 6
start reading on final project options: service | social
March 8 Lab 6 (Functions, characters and cryptography using Caesar's cypher) Lawlor: chap 6
March 9 Functions, in -class work.
array examples: arraysum.cpp, ssearch.cpp
Function to check whether a number is prime.
Lawlor: chap 6
start reading on final project options: service | social
March 28 Functions and parameter passing.
Pass by value and pass by reference.
Exercise: Bank account
Lawlor: chap 6
March 29 Lab 7 (Functions, parameter passing: banker and poetry problems) Lawlor: chap 6
March 30 Functions and parameter passing. A red-cell count histogram program. Lawlor: chap 6
April 4 A red-cell count histogram: bloodcell.cpp.
Exam2 practice problems.
Lawlor: chap 2,3,4,5,6
April 5 Lab 8 (C++ Functions: Playing Craps)
April 6 EXAM 2 C++ programming (Lawlor:chap 2,3,4,5,6 and handouts)
April 11, 12 Recursion.
Finding min, sum, palindrome: Exercises
April 13 Lab 9 (C++ recursion)
April 18, 19 Service learning: Web design tutorial.
April 20, 25, 26, 27 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.
GS:Chapter 4,5,6
May 2 Lab 10 | pdf
May 3, 4 Turing machines, computability, complexity classes. GS:Chapter 10
May 9 Service learning and social issues: Student presentations. GS:Chapter 14
Guidelines: service | social
May 10 Turing machine review problems
Applications of Computer Science: GIS and Robotics.
May 11 Robocup, goalies, and other fun stuff with AIBO dogs.
Review problems and solutions: exp.cpp | fib.cpp.
May 18 at 9am FINAL EXAM All material

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