Fundamentals of CS I (CS151 2001S)
[Current]
[Discussions]
[Glance]
[Honesty]
[Instructions]
[Links]
[News]
[Search]
[Syllabus]
Primary
[Examples]
[Exams]
[Handouts]
[Homework]
[Labs]
[Outlines]
[Quizzes]
[Readings]
[Reference]
Sets
[Blackboard]
[Scheme Report]
[SamR's Schedule]
[Rebelsky/Fall 2000]
[Walker/Fall2000]
[Stone/Spring2000]
Links
This is a highly approximate syllabus. Expect topics, assignments, ordering, and almost everything else to change.
Class 01 (Monday, January 22, 2001) Introduction to the Course
- Definitions: Computer science, computer programming, computing, algorithm, more
- Course basics
- Administrative issues
Assignments
- Scan through the course web.
- Fill out the introductory survey.
Class 02 (Wednesday, January 24, 2001) Algorithms: Thinking Formally
- An algorithm for making sandwiches
- Generalizing: What techniques did we use?
- Lab: Getting started in the MathLAN.
- Lab: Getting stared with Blackboard.
Due
- Introductory survey
- Consideration of course web
Assignments
Class 03 (Thursday, January 25, 2001) HTML: A Formal Markup Language
- About HTML
- Logical vs. Physical Markup
- Lab: Writing Documents for the World Wide Web
Assignments
- Homework 1 (due Feb. 1).
- Read Beginning Scheme for tomorrow's class
.- Skim The DrScheme Lab for tomorrow's class.
Class 04 (Friday, January 26, 2001) Starting Scheme
- Scheme basics
- Labs
- Reflection
Assignments
- Read Atoms and Lists
Class 05 (Monday, January 29, 2001) Symbols and Lists
- A short history of Scheme
- Symbolic values
- Lists
- Lab
Assignments
- Read Numbers in Scheme
Class 06 (Wednesday, January 31, 2001) Numbers
- Lab
- Reflection
Assignments
- Read Procedures
Class 07 (Thursday, February 1, 2001) Procedure Definitions
- Why define your own procedures?
- How to define your own procedures
- Lab
Assignments
- Read Boolean values.
- Read Conditionals.
Class 08 (Friday, February 2, 2001) Conditionals
- A problem: Turning numbers into letters.
- In English
- In conditional-less Scheme
- Making life easier: Conditionals
Due
Class 09 (Monday, February 5, 2001) Conditionals Lab
- The grading problem, revisited.
- Lab: Conditionals
Assignments
- Read Comments.
- Prepare questions on the procedures lab and the conditionals lab.
Class 10 (Wednesday, February 7, 2001) Pause for Breath
- Program design
- Indentation
- Comments (at least two types!)
- Problems?
- Two digits after decimal
- Others?
Assignments
- Read Characters and Strings.
Class 11 (Thursday, February 8, 2001) Characters and Strings
- Short introduction
- Lab
Assignments
- Read CGI Scripting.
Class 12 (Friday, February 9, 2001) CGI Scripting
- Notes on strings.
- Notes on CGI.
- Lab: CGI.
Assignments
Class 13 (Monday, February 12, 2001) CGI Scripting, Continued
- Short discussion.
- Lab.
Assignments
Class 14 (Wednesday, February 14, 2001) Repetition with Recursion
- Repetition
- Recursion
- Recursion in Scheme
- Examples: Sum
Class 15 (Thursday, February 15, 2001) Recursion with Lists
Assignments
Class 16 (Friday, February 16, 2001) More Recursion with Lists
- Recursively-defined types
- Squaring a list of values
- Lab: Repetition with Recursion
- Reflection
Due
Assignments
Class 17 (Monday, February 19, 2001) Recursion with Natural Numbers
- Reflections on recursion
- Introduction to numeric recursion
- Lab
Assignments
Handouts
Class 18 (Wednesday, February 21, 2001) Pairs
- Behind the scences in Scheme: Memory
- Pairs and Cons cells
- Dotted pairs
- Lab
Assignments
- Read Association Lists.
Class 19 (Thursday, February 22, 2001) Association Lists
- Databases
- Lists as databases
assoc
, a procedure for searching lists- Lab
Assignments
Class 20 (Friday, February 23, 2001) Pause for Breath
- Counting cons cells
- Returning more than one kind of value from a recursive procedure
- Exam discussion
Assignments
- Exam 1 distributed.
Due
Class 21 (Monday, February 26, 2001) Preconditions and Postconditions
- The need for documentation
- Verifying preconditions
- An example: Sum of squares
- Husk and Kernel programming
- Lab
Assignments
Class 22 (Wednesday, February 28, 2001) Local Bindings
- Why name things
- Naming things with
let
- Example
- Naming things with
let*
- Naming procedures
Class 23 (Thursday, March 1, 2001) Laboratory: Local Bindings
- Lab
Assignments
- Read input and output.
Class 24 (Friday, March 2, 2001) Program Input and Output
Assignments
Due
- Exam 1.
Class 25 (Monday, March 5, 2001) Introduction to Files
- Files and ports
- Reading values
- Examples: Summing values
- Reading characters and lines
- Lab
Assignments
Class 26 (Wednesday, March 7, 2001) Discussion of Exam 1
- Notes on exam 1
- Files lab
Class 27 (Thursday, March 8, 2001) Vectors
- Problems with lists
- A solution: Vectors
- Common vector procedures
- Lab
Class 28 (Friday, March 9, 2001) Pause for Breath
- Continued work on the files lab and the vectors lab
- Reflection
Due
Class 29 (Monday, March 12, 2001) Simulation
- The Problem of Simulation
- Scheme's
random
procedure- Simulating the roll of dice
- Lab
Due
Assignments
Class 30 (Wednesday, March 14, 2001) Local Procedure Bindings
- Why have local procedures
- Creating local procedures
- Lab
Class 31 (Thursday, March 15, 2001) Procedures as Values
- Design patterns, revisited
- A problem: Applying a procedure to all values in a list
- Various solutions
- A key technique: Procedures as parameters
- Common higher-order procedures:
map
,apply
- Another key technique: Anonymous procedures
- A final key technique: Procedures as return values
Class 32 (Friday, March 16, 2001) Procedures as Values, Continued
- Questions on readings
- Lab
Break runs from 5:00 p.m. on Friday, March 17, 1998 to 8:00 a.m. on Monday, April 3.
Class 33 (Monday, April 2, 2001) Introduction to GIMP
Assignments
- Homework 5: the More Higher-Order Procedures lab.
Class 34 (Wednesday, April 4, 2001) Script-Fu Basics
Class 35 (Thursday, April 5, 2001) Complete Scripts
- Lab
Class 36 (Friday, April 6, 2001) Script-Fu Concluded
- Lab
- Reflection
Assignments
- Exam 2 distributed.
Due
Class 37 (Monday, April 9, 2001) Tail Recursion
- Kinds of recursion
- Why do tail recursion
- Generating lists tail-recursively
- Lab
Class 38 (Wednesday, April 11, 2001) Tail Recursion, Continued
- A few more notes on tail recursion
- Lab
Class 39 (Thursday, April 12, 2001) Variable-Arity Procedures
- Definition of arity
- Why have variable-arity procedures
- How to write variable-arity procedures
- Lab
Class 40 (Friday, April 13, 2001) Multiple-Valued Procedures
- Why return multiple values from procedures
- How to return multiple values from procedures
- What to do with those multiple values
- An alternative
Class 41 (Monday, April 16, 2001) Laboratory: Multiple-Valued Procedures
- Lab
Assignments
Due
Class 42 (Wednesday, April 18, 2001) Basics of Searching and Sorting
Class 43 (Thursday, April 19, 2001) Searching: Laboratory
- Lab
Assignments
Class 44 (Friday, April 20, 2001) Searching Lab, Continued
- Lab
Class 45 (Monday, April 23, 2001) Sorting Techniques
- The problem of sorting, revisited
- Formalizing the problem
- Writing sorting algorithms
- Examples
- Insertion sort
- Selection sort
- Quick sort
- Merge sort
Class 46 (Wednesday, April 25, 2001) Insertion Sort
- Lab
- Reflection
Class 47 (Thursday, April 26, 2001) Merge Sort
- Lab
- Reflection
Class 48 (Friday, April 27, 2001) A Web Service
- The goals of the service
- The standard service architecture
- Some limits from our server
Class 49 (Monday, April 30, 2001) Discussion of Exam2
- General Issues
- Problem 1: Grading
- Justifying
- Detecting end of file
- Problem 2:
map!
- Efficiency: Don't recompute things
- Problem 3: Currying
- Many ways of looking at a curried procedure.
Class 50 (Wednesday, May 2, 2001) Records
Class 51 (Thursday, May 3, 2001) Object Basics
- Extending Objects
- Procedures as Objects
- Adding State
- Lab
Class 52 (Friday, May 4, 2001) Objects, Continued
Assignments
- Take-home Exam 3 Distributed.
Due
Attendance is particularly important this week.
Class 53 (Monday, May 7, 2001) Exam 3
Class 54 (Wednesday, May 9, 2001) Administrivia
- Grading
- Exam 3
- Wrapup
Class 55 (Thursday, May 10, 2001) Project Presentations
Class 56 (Friday, May 11, 2001) Course Evaluation
- Final project presentations
- About evaluations
- Evaluations
- Final statements
The history will not include small changes to the summaries of individual classes or perhaps even on the arrangement of courses. You can find more information on such changes in the individual outlines.
Friday, 12 January 2001
[Current]
[Discussions]
[Glance]
[Honesty]
[Instructions]
[Links]
[News]
[Search]
[Syllabus]
Primary
[Examples]
[Exams]
[Handouts]
[Homework]
[Labs]
[Outlines]
[Quizzes]
[Readings]
[Reference]
Sets
[Blackboard]
[Scheme Report]
[SamR's Schedule]
[Rebelsky/Fall 2000]
[Walker/Fall2000]
[Stone/Spring2000]
Links
Disclaimer: I usually create these pages on the fly. This means that they are rarely proofread and may contain bad grammar and incorrect details. It also means that I may update them regularly (see the history for more details). Feel free to contact me with any suggestions for changes.
This page was generated by Siteweaver on Thu Aug 29 14:16:50 2002.
This page may be found at http://www.cs.grinnell.edu/~rebelsky/Courses/CS151/2001S/syllabus.html
.
You may validate
this page's HTML.
The source was last modified Wed Jan 24 23:49:40 2001.