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:
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
Course Outline
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.