| Course Segment | Session ID | Session Title | Session Resources | Session Notes | 
|
| module 000: Getting Started with Linux, C, and the Scribbler 2 | 
|---|
| 1: intro. | Overview of Course | Course Overview DemoCourse Content OverviewModule Overview
 Readingscribbler-espeak.cSingle-robot motion, eSpeak, and beeping: single-robot-demo.cavoid-obj.c
 Utility programThe Introductory Computer Science Sequence at Grinnell CollegePair ProgrammingWorkstation Setup
 | Placing this course in context | 
| 2: lab | Linux/Mac OS X Basics | Reading Basic Linux Commands and CapabiitiesEditing, Storing, and Retrieving Files in CS 115
 | review of basic Linux commands and setting up .bashrc | 
| 3: lab | Elementary C Programming | Example Readingquarts.c:  A first program in Ctemperature conversion, C versiontemperature conversion with averaging
 Getting Started with C Programming
 | basics of C syntax, editing, compiling, and running | 
| 4: lab | More C with eSpeak and Makefiles | Example ReadingeSpeakExample1.ceSpeakExample2.c
 More Linux (Background processes, autocompletion, manual, printing)Intro. to eSpeak and MakefileseSpeakPackage.h
 | additional Linux commands, use of eSpeakPackage | 
| 5: lab | Using the Scribbler 2 Robot and Mechanics of Basic Input | DemoExample Readingpirates.cspirit-song-full.cearsHangLow.cspirit-song.cquarts-rev.cquarts-gallons.c
 Programming with the Scribbler 2Mechanics of Basic InputMyroC documentation
 | program structure for MyroC | 
| 6: lab | Introduction to Program Organization | Reading Introduction to Program Organization
 | Introduction of include files; function to organize work ? no parameters, no return; incremental software development | 
| 7: project | Project:  Program a Song | Example |  | 
|
| module 001: Conditionals, Loops, and Scribbler 2 Motion | 
|---|
| 1: intro. | Overview of conditional statements and control structures | Reading Overview of conditionals, loops, and Scribbler 2 motion
 |  | 
| 2: lab | Types, Variables, and Casting | Example Readingquarts.cprintf-formatting.c
 |  | 
| 3: lab | Conditionals with the Scribbler 2 | Example Readingsmallest3-1.csmallest3-2.csmallest3-3.csmallest3-4.cinteger-words.clight-switch.csensor-use.clight-sensor-example.cconditional-lightSensor-1.cconditional-lightSensor-2.clight-sensor-switch.cblocking-nonblocking.c
 Boolean Values and ExpressionsAn introduction to Conditional Statements in CScribbler 2 Sensors and MotionDiagram of Scribbler 2 sensors and function calls
 | use of sensors in controlling the Scribbler 2 | 
| 4: lab | Loops and Scribbler 2 Motion | Example Readingice-cream-truck.crobot-dance.cwhile-obstacle.cdo-while-beep.c3-loops.c
 | combining sensors, motion, and repeated actions | 
| 5: lab | Nested Loops | ExampleReading |  | 
| 6: project | Project: Robot Actions | — — — |  | 
| 7: lab | Simple Simulations and More Program Management:  Functions, Value Parameters, Assertions, | Example Readingcouple-1.ccouple-2.ccouple-3.ccouple-4.ccouple-5.ccouple-6.cquadratic.ccoins.cyoyo-program.c
 Introduction to SimulationProgram Management with Functions and Assertions
 | introductory simulations and functions with and without value parameters and return values | 
|
| module 010: Functions, Addresses, Arrays,and Testing | 
|---|
| 1: intro. | Function Prototypes and an Overview of Functions, Arrays, and Addresses | Reading Arrays, Functions, Testing and Arrays:  An Overview
 |  | 
| 2: lab | The Run-time Stack | Example Readingpi-sim.cvalue-param-example.cadd2.ccouple-6.clab-value-param.chomework-value-param.c
 | storage allocation within the run-time stack | 
| 3: lab | Functions with Addresses as Parameters | Example Readingfunc-sphere.cperim-area-1.cperim-area-2.cperim-area-2a.cfunc-exercise-1.cfunc-exercise-2.cquadratic-two-roots.cfunc-exercise-3.c
 Functions with Addresses as Parameters
 | experiments with values and addresses as parameters | 
| 4: lab | Arrays | Example Readingmax-min.carray-scale.carray-move.cphotographer.cmax-array.c
 | array storage, base addresses, indices | 
| 5: lab | Program Correctness, and Testing | Example Readingfunc-parm.cfunc-parm-arrays.cmotors-test.cobject-avoid.cfollower-test.crand-beep.cget-ir.c
 | notes on pre- and post-conditions | 
| 6: intro. | Overview of Characters, Strings, and I/O | Example Readingcounting-chars.cchar-example.c
 Characters, Strings, and I/O:  An Overview
 |  | 
| 7: lab | Characters and Strings | Example Readingcharacter-example.cio-NATO.cstring-example-1.cstring-example-2.cstring-intro.c
 Characters in CStrings in C
 | character coding, string storage and functions | 
| 8: project | Project:  Uninterpretable Dance | Example darts.c (with random number generator)
 | project integrates all elements of C to this point | 
| 9: lab | Function Pointers and Arrays | Example Readingcircle-circum-area-1.ccircle-circum-area-2.ccircle-circum-area-3.c
 Function Pointers (Optional)
 | Function pointers and arrays of functions | 
|
| module 011: Characters, Strings, and I/O | 
|---|
| -5: project | Project:  Robot Follows Typed Commands | — — — |  | 
| 3: lab | Data input with scanf | Example Readingscanf-example-1-2.cscanf-example-3.cscanf-example.cscanf-char.ci-o-example-1a.ci-o-example-1b.ci-o-example-2.ci-o-example-3.ci-o-example-4.c
 | Use of scanf and format strings for reading | 
| 4: lab | Character-by-Character Input and Output | Example Readingoption-prog-1.coption-prog-2.cscanf-s-test-1.cscanf-s-test-2.cget-3-char.cgetchar-example.cinput-examples.c
 Character-by-character Input and Output
 | Use of getchar, putchar, printf | 
|
| unit : Data Representation | 
|---|
| -5: lab | Use of the gdb Debugger | Reading Debugging with GNU Debugger:  a GDB Tutorial by Samuel Huang from the University of Maryland
 | Practice with the dgb Debugger | 
| -4: lab | Machine-level Explorations | Reading Machine-level Operations, Bit Manipulation, and Unions
 | bit-level operations | 
| -4: lab | Consequences of Data Representation | Reading Consequences of Data Representation on Programming
 |  | 
| -4: lab | Machine-level Explorations | reading King, Section 20.1, pages 509-515Kernighan and Ritchie, Section 2.9, pages 48-49
 | bit-level operations | 
| -3: lab | Representation of Floating-point Numbers | Reading Binary Representation of Floating-point Numbers
 | IEEE floating-point representation | 
| -2: lab | Representation of Integers | Reading Utility programBinary Representation of IntegersRepresentation of Signed Integers
 Program integer-sizes.c to display sizes of integer data typesProgram integer-ranges.c to display ranges of integer data typesProgram integer-rep.c to display binary representations of integersProgram integer-rep.ss (in Scheme) to represent binary representations of integers
 | 3 representations of integers | 
| -1: intro. | Overview of Number Representation | Reading Representation of Numbers:  Unit Overview
 |  | 
|
| module 100: Grouping Data and Image Processing with the Scribbler 2 | 
|---|
| -6: project | Project:  Picture Suite | — — — |  | 
| 1: intro. | Overview of Grouping Data | Reading Grouping data and image processing with the Scribbler 2:  An Overview
 |  | 
| 2: lab | Grouping Data:  Structs | Example Readingsquare-move-1.csquare-move-2.csquare-move-3.csquare-move-4.csquare-move-5.csquare-move-6.ctest-scores-1.ctest-scores-2.ctest-scores-3.c
 | syntax, semantics, and applications of structs | 
| 3: lab | Grouping Data:  2-dimensional Arrays | Example Readingcity-precipitation.c2D-array.c
 |  | 
| 4: lab | Image Storage and Processing | Example Readingpicture-splice.c2D-array-with-proc.c
 Image Storage and Processing
 | storage of pixel data in a struct with a 2D array | 
| 5: lab | Insertion Sort | Example Readinginsertion-sort-proc1.cinsertion-sort-proc2.cinsertion-sort-proc3.c2D-1D-array.cinsertion-sort-picture.c
 |  | 
|
| module 101: Dynamic Memory, Pointers, and Linked Lists | 
|---|
| -8: project | Project:  Music Composition | — — — |  | 
| -7: Project | Project:  Robot Command Sequence | — — — |  | 
| -6: lab | Program Management Header Files | — — — | division of programs into multiple files | 
| -5: lab | Linked Lists for a Movie | — — — | movie application for lists | 
| -4: lab | Linked-lists in C | — — — | basic list operations | 
| -3: lab | Scheme-like Lists in C | — — — | insertion and deletion at front of linked lists | 
| -2: lab | Memory Allocation and Pointers | — — — | introduction to pointers and dynamic memory | 
| -1: intro. | Pointers and Dynamic Memory | — — — |  | 
|
| module 110: Bash Scripts | 
|---|
| -6: intro. | Abstract Data Types:  Stacks and Queues | — — — |  | 
| -5: lab | Stacks | — — — | array and linked-list implementations of stacks | 
| -4: lab | Bash Scripts | — — — | using bash scripts for testing | 
| -4: project | Project:  Comparing Stack Implementations | — — — |  | 
| -3: lab | Queues | — — — | array and linked-list implementations of queues | 
|
| module 111: Imperative Problem Solving, Robots, and Varieties of Input and Output | 
|---|
| -5: project | Project: Robot Parade | — — — | builds on earlier project for user control of robots | 
| -2: lab | Command-line Arguments | — — — | focuses upon arrays of strings and string processing | 
| -1: intro. | Overview of Command-line Arguments and Files | — — — |  | 
| 3: lab | File Input and Output with Characters and Strings | — — — | basic input of characters and strings | 
| 4: lab | File Processing Applications (Optional) | — — — | practice using stream input from text files |