Fundamentals of Computer Science I (CS151.02 2007S)

CS151.02 2007S At A Glance

This handout is also available in PDF.

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.

Monday Tuesday Wednesday Friday
Week 1: Getting Started
(01) Monday, January 22, 2007
An Introduction to Algorithms
Introduction; What is CS? An Algorithm for Making Simple Sandwiches. Assignments: Do Homework 1 (due tomorrow). Read Linux and the MathLAN (also due tomorrow).
(02) Tuesday, January 23, 2007
An Introduction to CSC151
Lessons from PB and J. Common parts of an algorithm. About the course. Lab. Some administrative details.
Due:HW 1
(03) Wednesday, January 24, 2007
Working in DrScheme
Wrapping up the MathLAN lab. DrScheme lab.
(04) Friday, January 26, 2007
Beginning Scheme
Why use programming languages? Scheme basics. Scheme history. Lab.
Due:HW 2
Week 2: Data Types
(05) Monday, January 29, 2007
Symbols and Lists
Symbolic values. Lists. Lab.
(06) Tuesday, January 30, 2007
Numeric Values
Types. Review of Reading: Numbers, Kinds of Numbers, and Numeric Operations. Lab. Reflection.
Due:HW 3
(07) Wednesday, January 31, 2007
Characters and Strings
Additional lessons from yesterday. Short introduction to strings. Lab.
(08) Friday, February 2, 2007
Procedure Definitions
Why define your own procedures? How to define your own procedures. Lab.
Due:HW 4
Week 3: Control Structures
(09) Monday, February 5, 2007
Boolean Values and Predicates
Preparation. Lab.
(10) Tuesday, February 6, 2007
Conditionals
Preliminary Notes on Conditionals. Lab. Reflections.
Due:HW 5
(11) Wednesday, February 7, 2007
Recursion
Repetition. Recursion. Recursion in Scheme. Lab.
(12) Friday, February 9, 2007
Recursion, Revisited
Q&A. Lab. Optional topics: Scheme's Evaluation Strategy; Another Example.
Due:HW 6
Week 4: Recursion, Revisited
(13) Monday, February 12, 2007
Recursion with Lists
Q&A. Labs.
(14) Tuesday, February 13, 2007
Recursion with Natural Numbers (1)
Writing Recursive Procedures. Short Introduction to Numeric Recursion. Lab.
(15) Wednesday, February 14, 2007
Recursion with Natural Numbers (2)
Q & A. Lab. Reflection.
(16) Friday, February 16, 2007
Local Bindings
Why name things. Naming things with let. Naming things with let*. Naming procedures. Lab.
Due:HW 7 Assignments: Exam 1
Week 5: Miscellaneous
(17) Monday, February 19, 2007
Documentation, Preconditions and Postconditions
The need for documentation. Verifying preconditions. Husk and Kernel programming. Lab.
(18) Tuesday, February 20, 2007
Unit Testing
An Overview of Testing. Using Our Test Environment. Lab.
(19) Wednesday, February 21, 2007
Local Procedure Bindings
Why Have Local Procedures. Creating Local Procedures. An Example: Reverse. Lab.
(20) Friday, February 23, 2007
Analyzing Procedures
Overview. Steps. Lab.
Due:Exam 1
Week 6: Files
(21) Monday, February 26, 2007
Discussion of Exam 1
Notes on exam 1.
(22) Tuesday, February 27, 2007
Input and Ouptut
Interactive programs. Output in Scheme. Input in Scheme.
(23) Wednesday, February 28, 2007
Recursion with Files
Remaining I/O Topic: Repetitive Prompting. About Files. Key File Operations. File Recursion. Lab.
(24) Friday, March 2, 2007
Simulation
The Problem of Simulation. Scheme's random procedure. Simulating the roll of dice. Lab.
Due:HW 8 Due:HW 9
Week 7: First Project: Generating Text
(25) Monday, March 5, 2007
Project: Text Generation (Part One)
The Project. Strategies. Dividing the Work. Lab.
(26) Tuesday, March 6, 2007
Project: Text Generation (Part Two)
Improving Our Text Generation Strategy. Questions. Lab.
Due:HW 10
(27) Wednesday, March 7, 2007
Project: Text Generation (Part Three)
(28) Friday, March 9, 2007
Project: Text Generation (Part Four)
Week 8: Data Structures
(29) Monday, March 12, 2007
Pairs and Pair Structures
Memory and Naming. Pairs and Cons cells. Why care? Lab.
(30) Tuesday, March 13, 2007
Deep Recursion
Lists, revisited. Trees, introduced. Deep recursion, considered. Lab.
(31) Wednesday, March 14, 2007
Deep Recursion Laboratory
Lab.
(32) Friday, March 16, 2007
Vectors
Problems with lists. A solution: Vectors. Lab.
Due:Project Report 1
Spring Break
Week 9: Scripting Graphics in the GIMP
(33) Monday, April 2, 2007
GIMP Basics
About the GIMP. This week. Getting started with the GIMP. Lab.
(34) Tuesday, April 3, 2007
Getting Started with Script-Fu
About Script-Fu. Lab. Reflection.
(35) Wednesday, April 4, 2007
Writing Script-Fu Procedures
Reflections on the first Script-Fu Lab. Writing procedures for Script-Fu. Lab.
(36) Friday, April 6, 2007
Randomized Images
Randomized Drawing - Some Theory. Randomized Drawing - Some Practice. Lab.
Due:Exam 2
Week 10: Higher Order Procedures
(37) Monday, April 9, 2007
Algorithmic Art
Color grids. Example. Anonymous Procedures. Lab.
(38) Tuesday, April 10, 2007
Discussion of Exam 2
General issues. Problem 4. Problem 3. Problem 2. Problem 1.
Due:HW 11
(39) Wednesday, April 11, 2007
Manipulating Images with Script-Fu
Primary image-manipulation procedures. color transformations. Lab.
(40) Friday, April 13, 2007
Drawing with Script-Fu
Representing drawings. Transforming drawings. Lab.
Due:HW 12
Week 11: Algorithms (1): Searching
(41) Monday, April 16, 2007
Higher-Order Procedures, Summarized
Background: Guiding Principles. Background: Writing Similar Code. Procedures as Parameters. Anonymous Procedures. Procedures as Return Values. Encapsulating Control. Final Thoughts.
(42) Tuesday, April 17, 2007
Association Lists and Searching
Databases and dictionaries. Lists as dictionaries. assoc, a procedure for searching lists. Variants of Association Lists. Lab.
Due:HW 13
(43) Wednesday, April 18, 2007
Binary Search
About common algorithms. Searching. Binary search. Lab.
(44) Friday, April 20, 2007
Introduction to Sorting
The problem of sorting, revisited. Writing sorting algorithms. Examples: Insertion, Selection, etc. Formalizing the problem.
Due:HW 15
Week 12: Sorting
(45) Monday, April 23, 2007
Insertion Sort
Preparation. Lab. Reflection.
(46) Tuesday, April 24, 2007
Merge Sort
Key Ideas. Lab. Reflection.
Due:HW 15
(47) Wednesday, April 25, 2007
Quicksort
The key ideas of Quicksort. Lab.
(48) Friday, April 27, 2007
Variable-Arity Procedures
Definition of arity. Why have variable-arity procedures. How to write variable-arity procedures. Lab.
Due:HW 16
Week 13: Object-Oriented Programming in Scheme
(49) Monday, April 30, 2007
Object Basics
Representing Compound Values. Introduction to Objects. Procedures as Objects. Adding State.
(50) Tuesday, May 1, 2007
An Object Example
Review of reading. Extended example.
(51) Wednesday, May 2, 2007
Objects Lab
Review of reading. Lab.
(52) Friday, May 4, 2007
Metaprogramming
Code vs. Data in Scheme. Rewriting Named let structures. Generating Code for Objects.
Due:Exam 3
Week 14: Wrapup
(53) Monday, May 7, 2007
Discussion of Exam 3
General Observations. Specific Problems.
(54) Tuesday, May 8, 2007
What is Computer Science, Revisited?
What is CS? Subfields of CS. Related Disciplines.
(55) Wednesday, May 9, 2007
Wrapup
The subject matter of the course. Evaluation forms. Final comments.
(56) Friday, May 11, 2007
Review for Final
Grading. The Final. Preparting for the Final.

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 Thu Sep 13 20:54:00 2007.
The source to the document was last modified on Thu Jan 18 14:16:49 2007.
This document may be found at http://www.cs.grinnell.edu/~rebelsky/Courses/CS151/2007S/Handouts/glance.html.

You may wish to validate this document's HTML ; Valid CSS! ; Creative Commons License

Samuel A. Rebelsky, rebelsky@grinnell.edu

Copyright © 2007 Samuel A. Rebelsky. This work is licensed under a Creative Commons Attribution-NonCommercial 2.5 License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc/2.5/ or send a letter to Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.