Computer Science Fundamentals (CS153 2004S)
[Skip to Body]
Primary:
[Front Door]
[Current]
[Glance]

[Honesty]
[Instructions]
[Links]
[Search]
Groupings:
[EBoards]
[Examples]
[Exams]
[Handouts]
[Homework]
[Labs]
[Outlines]
[Readings]
[Reference]
Misc:
[Experiments in Java]
[Java API]
[Scheme Reference]
[Scheme Report]
[CS153 2003S]
[CS151 2003F]
[CS152 2000F]
[SamR]
This is an abbreviated course syllabus. Like everything else in this course, it is likely to change.
Weeks: 1, 2, 3, 4, 5, 6, 7, 8, break, 9, 10, 11, 12, 13, 14.
Week 1: Starting Scheme  
Martin Luther King day  (01) Wednesday, 21 January 2004 Introduction to The Course Definitions: Computer science, computer programming, computing, ialgorithm, and more. Course basics. Administrative issues. Getting started with the ECA. Assignments: Scan through the course front door and the various administrative handouts. Fill out the introductory survey (to be distributed via email). Read Starting Scheme. 
(02) Thursday, 22 January 2004 Starting Scheme About Scheme Lab: The DrScheme Programming Environment. Lab: Starting Scheme. Assignments: Read Symbolic Values in Scheme. Read Lists in Scheme. Read Numbers in Scheme. 
(03) Friday, 23 January 2004 Basic Types: Symbols, Lists, and Numbers Overview of Types Symbols Lists Numbers Lab on Types Assignments: Read Procedures in Scheme (due Mon). Do Homework 1: Lab Writeup: Types (due Wed). 
Week 2: Control Structures  
(04) Monday, 26 January 2004 Procedures Why define your own procedures? How to define your own procedures. Lab on userdefined procedures. Assignments: Read Conditional evaluation in Scheme. Read Boolean values in Scheme. 
(05) Wednesday, 28 January 2004 Conditionals A problem: Turning numbers into letters (in English and Scheme). Making life easier: Conditionals. What kinds of tests can you use in conditionals? Due: Homework 1: Lab Writeup: Types. Assignments: Read Repetition with recursion. 
(06) Thursday, 29 January 2004 Recursion with Lists Recursion basics. Patterns of recursive functions over lists. Lab: Repetition with Recursion. Assignments: Read Numeric Recursion. Homework 2: TypeChecking. 
(07) Friday, 30 January 2004 Numeric Recursion Introduction to numeric recursion. Lab. Assignments: Read Naming Values with Local Bindings. 
Week 3: Procedures, Revisited  
(08) Monday, 2 February 2004 Local Bindings Why name things. Naming things with let .
Naming things with let* .
Naming nonrecursive procedures.
Lab: Local Bindings with
let .
Assignments: Read Preconditions and Postconditions. 
(09) Wednesday, 4 February 2004 Preconditions and Postconditions The need for documentation. Verifying preconditions. An example: Sum of squares. Husk and Kernel programming. Other uses of Husk and Kernel. Lab. Due: Homework 2. Assignments: Read Local Procedure Bindings with letrec .

(10) Thursday, 5 February 2004 Local Procedures Lab. 
(11) Friday, 6 February 2004 VariableArity Procedures Lab. Assignments: Do Homework 3. Read Characters in Scheme. Read Strings in Scheme. 
Week 4: Compound Structures  
(12) Monday, 9 February 2004 Strings Short introduction to strings. Lab: Characters and Strings. Assignments: Read Pairs and Pair Structures. Begin Exam 1. 
(13) Wednesday, 11 February 2004 Pause for Breath Question: Summing Random Numbers. On the relationship between modulo and remainder .
On the various real to integer conversion procedures.
Due: Homework 3. 
(14) Thursday, 12 February 2004 Pairs and Pair Structures Behind the scences in Scheme: Memory. Pairs and Cons cells. Dotted pairs. Lab. Assignments: Read Vectors. 
(15) Friday, 13 February 2004 Vectors Problems with lists. A solution: Vectors. Side note: The begin construct.
Lab.
Assignments: Read HigherOrder Procedures (1). (Here's where Scheme gets really cool.) 
Week 5: HigherOrder Procedures and More  
(16) Monday, 16 February 2004 HigherOrder Procedures (1) Design patterns, revisited. Key ideas of higherorder procedures. Lab. Assignments: Read HigherOrder Procedures (2). 
(17) Wednesday, 18 February 2004 HigherOrder Procedures (2) Operator sections. Rethinking procedure definitions. Questions on readings. Lab. Due: Exam 1. Assignments: Homework 4: HigherOrder Vector Procedures. 
(18) Thursday, 19 February 2004 HigherOrder Procedures (3) Lab (1), Continued. Lab (2), Continued. Reflection. 
(19) Friday, 20 February 2004 Tail Recursion Kinds of recursion. Why do tail recursion. How to do tail recursion. Generating lists tailrecursively. Lab. Assignments: Read Tail Recursion. 
Week 6: Algorithms  
(20) Monday, 23 February 2004 Algorithm Analysis (1) Comparing Algorithms. Asymptotic Analysis. Eliminating Constants. Asymptotic Analysis in Practice. The Role of Details. 
(21) Wednesday, 25 February 2004 Algorithm Analysis (2) Big O notation, revisited. Doing BigO Analysis. Dominant terms. BigO Analysis of Recursive Procedures. Experimental analysis. Due: Homework 4. Assignments: Read Searching. 
(22) Thursday, 26 February 2004 Searching Algorithms for common problems. A key problem: Searching. Sequential Search. Binary Search. Lab. Assignments: Read Sorting. 
(23) Friday, 27 February 2004 Sorting The problem of sorting. Writing sorting algorithms. Examples: Insertion sort, Selection sort. Continue Searching lab. Assignments: Read Merge Sort. Read Quicksort. 
Week 7: Introduction to Java  
(24) Monday, 1 March 2004 Comparing Sorting Algorithms O(n^{2}) sorting algorithms. Random detours. 
(25) Wednesday, 3 March 2004 Detour: Miscellaneous Scheme Stuff Equality predicates. Continuations. Assignments: Exam 2: Algorithms and HigherOrder Procedures. Read Randomness and simulation. 
(26) Thursday, 4 March 2004 Discussion of Exam 1 
(27) Friday, 5 March 2004 Fast Sorting Algorithms Merge sort. Quicksort. Lab. Assignments: Read Experiments in Java, Chapter J1: An Introduction to Java. 
Week 8: More Java Basics  
(28) Monday, 8 March 2004 Getting Started with ObjectOriented Programming An introduction to objectoriented programming. 
(29) Wednesday, 10 March 2004 Getting Started with Java About Java. Your first Java program. Java in the MathLAN. Lab. Due: Exam 2. 
(30) Thursday, 11 March 2004 Discussion of Exam 2 Cloning. LessThan?. Sectioning. 
(31) Friday, 12 March 2004 Objects, Methods, and Classes Building Classes. The Problem: A RationalClass. Overview of a Class Declaration. Fields, Methods, and Constructors. Different Class Uses. Some Design Issues. 
Spring Break  
Week 9:  
(32) Monday, 29 March 2004 Conditionals Review. Boolean expressions in Java. Basic conditionals: the if statement.
Other conditionals: the switch statement.
Lab.
Assignments: Read Lab J5: Loops. 
(33) Wednesday, 31 March 2004 Loops Iterative Repetition. While Loops. Do Loops. For Loops. Lab (J5.1 and J5.3). Assignments: Read X3: Input, output, files, and exceptions. Focus on the exceptions issues. 
(34) Thursday, 1 April 2004 When Things Go Wrong Problems in Programs. Techniques for Handling Errors. Exceptions: Java's Primary ErrorHandling Technique. Dealing with Procedures that Throw Exceptions. OptionallyCatchable Exceptions. Throwing Exceptions. Defining Exceptions. Assignments: Start homework 5. 
(35) Friday, 2 April 2004 Building a Rational Class, Revisited Review: Java. Review: Rational.java .
Computing gcds.
Arithmetic operations.
Testing.
Constructors.

Week 10: Lists  
(36) Monday, 5 April 2004 Arrays Introduction to Arrays. Arrays in Java. An Application: Fibonacci Numbers. An Application: Box Packing. Assignments: Read O1: ObjectOriented Design. 
(37) Wednesday, 7 April 2004 Designing Objects Introduction to ObjectOriented Design. Why do ObjectOriented Design. Protection. Some basic strategies. Reuse. A group exercise. Assignments: Read EIJ, Lab O2. 
(38) Thursday, 8 April 2004 Inheritance Reuse. Inheritance. Inheritance in Java. Special issue: Constructors. Special issue: Interfaces. Special issue: Abstract Classes. Lab. Assignments: Read EIJ, Chapter O3. Begin Homework 5. 
(39) Friday, 9 April 2004 Polymorphism Quick review of inheritance. Quick review of polymorphism. Lab: Polymorphism. 
Week 11: Other Linear Structures  
(40) Monday, 12 April 2004 Introduction to Abstract Data Types and Data Structures Organizing Data. Example: Arrays. Collections. Assignments: Read the section on lists in the data structures book distributed to you. Summarize the methods associate with the list ADT. 
(41) Wednesday, 14 April 2004 Scheme Lists Scheme lists as ADT. Implementing Scheme lists. Due:Homework 6. Assignments: Exam 3. 
(42) Thursday, 15 April 2004 List ADT Design What else is a list? A SimpleList ADT. An OrderedList ADT. An SortedList ADT. The java.util perspective. 
(43) Friday, 16 April 2004 Implementing Lists with Arrays Implementation: Using Arrays. Strategies for various methods. Running time. Determining if a position is valid. Assignments: Read Lists with "Current" Considered Harmful by Joseph Bergin. 
Week 12: Miscellaneous  
(44) Monday, 19 April 2004 Yet Another Detour 
(45) Wednesday, 21 April 2004 Determining Position Validity Due: Exam 3. 
(46) Thursday, 22 April 2004 Implementing Lists with Nodes Detour: Implementing isValid .
Implementing Lists with Nodes.
Basic Methods.
Implementing Ordered Lists.
Variants.

(47) Friday, 23 April 2004 Linear Structures About linear structures. Stacks. Queues. Priority Queues. Implementation notes. Assignments: Homework 7: Task Lists. 
Week 13: Dictionaries  
(48) Monday, 26 April 2004 Detour: Serialization Why serialize objects. How to serialize objects. Other introspection issues. 
(49) Wednesday, 28 April 2004 Cancelled 
(50) Thursday, 29 April 2004 Priority Queues, Heaps, and Heap Sort Priority Queues. Simple Implementations. Trees. Heaps. Due: Homework 7. Assignments: Homework 8: Sorting. 
(51) Friday, 30 April 2004 The Dictionary ADT Introduction to the Dictionary ADT Methods. Applications. Dictionaries vs. Databases. Implementation: Association Lists (and variants). Implementation: Binary Search Trees. 
Week 14:  
(52) Monday, 3 May 2004 Implementing Dictionaries with Hash Tables The Idea of Hashing. Hash Functions. Hashing in Java. Handling Hashing Conflicts. 
(53) Wednesday, 5 May 2004 Implementing Dictionaries with Binary Search Trees An ADT for binary search. Implementing that ADT with arrays. Binary search trees. BSTs and dictionaries. 
(54) Thursday, 6 May 2004 Discussion of Exam 3 Problem 1: Erroneous Code. Problem 2: Orders. Problem 3: Dynamic Arrays. Problem 4: Selection Sort. 
(55) Friday, 7 May 2004 Evaluation Evaluation. The subject matter. Final thoughts. 
This document is automatically generated from a number of other documents. Hence, I may not always remember to update the history.
Friday, 12 January 2001 [Samuel A. Rebelsky]
Course at a Glanceform.
Tuesday, 7 Janaury 2003 [Samuel A. Rebelsky]
Tuesday, 14 January 2003 [Samuel A. Rebelsky]
[Skip to Body]
Primary:
[Front Door]
[Current]
[Glance]

[Honesty]
[Instructions]
[Links]
[Search]
Groupings:
[EBoards]
[Examples]
[Exams]
[Handouts]
[Homework]
[Labs]
[Outlines]
[Readings]
[Reference]
Misc:
[Experiments in Java]
[Java API]
[Scheme Reference]
[Scheme Report]
[CS153 2003S]
[CS151 2003F]
[CS152 2000F]
[SamR]
Disclaimer:
I usually create these pages on the fly
, which means that I rarely
proofread them and they may contain bad grammar and incorrect details.
It also means that I tend to update them regularly (see the history for
more details). Feel free to contact me with any suggestions for changes.
This document was generated by
Siteweaver on Fri May 7 09:54:49 2004.
The source to the document was last modified on Tue Jan 13 10:38:16 2004.
This document may be found at http://www.cs.grinnell.edu/~rebelsky/Courses/CS153/2004S/Handouts/glance.html
.
You may wish to validate this document's HTML ; ; Check with Bobby
Samuel A. Rebelsky, rebelsky@grinnell.edu