CS101 -- Computer Science I, Spring 2009

Objectives

This course is an introduction of the art and science of computer programming and to some of the fundamental concepts of computer science. Students will write programs in the Java programming language. Good programming design strategy will be stressed throughout. There will also be a study of some of the basic notions of computer science, including computer system organization, files and some algorithms of fundamental importance.

Administrivia

Lectures: Tuesday and Thursday, 12:00-1:15pm in Fulton 245.
Instructor: Hao Jiang, Campanella Way 21, Room 554, email: hjiang@cs.bc.edu, url: www.cs.bc.edu/~hjiang.
Teaching Assistant: Christopher J. Deerr, email: deerr@bc.edu.
Instructor office hours: T 10:40-11:40am, F 2:00-3:00pm.
TA office hours: T:3:00pm-4:30pm and 6:00pm-8:00pm, TH: 6:00-8:00pm.

Lecture Schedule (Approximate)

Date Time Topics Readings
Week 1
Thu 01/15/2009
12:00-1:15 Introduction; Your First Program
   Sedgewick & Wayne 1.1; Install Java in Windows
Week 2
Tue 01/20/2009
12:00-1:15 Arithmetics
   Sedgewick & Wayne 1.2
Thu 01/22/2009
12:00-1:15 More Built-in Types in Java
   Sedgewick & Wayne 1.2
Week 3
Tue 01/27/2009
12:00-1:15 Conditionals and Loops
   Sedgewick & Wayne 1.3
Thu 01/29/2009
12:00-1:15 Applications of Conditionals and Loops
   Sedgewick & Wayne 1.3
Week 4
Tue 02/03/2009
12:00-1:15 Array
   Sedgewick & Wayne 1.4
Thu 02/05/2009
12:00-1:15 Sorting and Searching (note)
   Linear Search and Selection Sort
Week 5
Tue 02/10/2009
12:00-1:15 Multidimensional Array
   Sedgewick & Wayne 1.4
Thu 02/12/2009
12:00-1:15 Input and Output
   Sedgewick & Wayne 1.5 (Examples: Clock.java, Earth.java)
Week 6
Tue 02/17/2009
12:00-1:15 Function (note)
   Sedgewick & Wayne 2.1, 2.2
Thu 02/19/2009
12:00-1:15 Recursion
   Sedgewick & Wayne 2.3 (Star.java, Reverse.java)
Week 7
Tue 02/24/2009
12:00-1:15 Midterm Review
Thu 02/26/2009
12:00-1:15 Midterm Exam(solution)
Week 8
Tue 03/03/2009
No Class (Spring break)
Thu 03/05/2009
No Class (Spring break)
Week 9
Tue 03/10/2009
12:00-1:15 Recursion
   Sedgewick & Wayne 2.3
Thu 03/12/2009
12:00-1:15 Maze
   Sedgewick & Wayne 2.3; Maze.java
Week 10
Tue 03/17/2009
12:00-1:15 Data Types
   Sedgewick & Wayne 3.1; Filter.java
Thu 03/19/2009
12:00-1:15 Constructing Data Types
   Sedgewick & Wayne 3.2; Ball.java, RandomBall.java
Week 11
Tue 03/24/2009
12:00-1:15 Encapsulation, immutabilty and inheritance
   Sedgewick & Wayne 3.3; Examples
Thu 03/26/2009
12:00-1:15 Object Oriented Programming
   Rational; Interval
Week 12
Tue 03/31/2009
12:00-1:15 Object Oriented Programming
   Sedgewick & Wayne 3.4; Plannet.java; TetrisSkeleton.zip
Thu 04/02/2009
12:00-1:15 GUI Programming
   Code
Week 13
Tue 04/07/2009
12:00-1:15 Performance
  
Thu 04/09/2009
No Class (Easter)
Week 14
Tue 04/14/2009
12:00-1:15 Linked List
   ListInt.java, List.java
Thu 04/16/2009
12:00-1:15 Stacks and Queues
   Examples
Week 15
Tue 04/21/2009
12:00-1:15 Final Project Proposal Presentation
  
Thu 04/23/2009
12:00-1:15 Computer vision, Object Recognition, and AI
   Turing, "Computational Machinery and Intelligence", 1950.
Week 16
Tue 04/28/2009
12:00-1:15 Final Project Discussion and Final Exam Review
  
Thu 04/30/2009
12:00-1:15 Final Exam

Grading

Evaluations will be based on programming assignments, a course project, a midterm and final exam:

Assignments and Projects

Assignments except the final project are to be done individually. Final projects can be done in groups (no more than 2 students in each group). Assignments are due at the beginning of the specified class time. For each day late, 10% of the total possible points will be deducted. No work will be accepted after 4 days late.

Textbook

Academic Integrity

Academic Integrity plays a key role in our efforts to maintain a high standard of academic excellence and integrity. Students are advised that all acts of intellectual dishonesty are subject to disciplinary action by the school. Students are encourage to read the school's policy information (http://www.bc.edu/offices/stserv/academic/resources/policy/#integrity).