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- Course Content Overview
- Module Overview
Demo- scribbler-espeak.c
- Single-robot motion, eSpeak, and beeping: single-robot-demo.c
- avoid-obj.c
Reading- The Introductory Computer Science Sequence at Grinnell College
- Pair Programming
- Workstation Setup
Utility program | Placing this course in context |
2: lab | Linux/Mac OS X Basics | Reading- Basic Linux Commands and Capabiities
- Introduction to Emacs by Marge Coahran (Lab exercises optional for class preparation)
| review of basic Linux commands and setting up .bashrc |
3: lab | Elementary C Programming | Example- quarts.c: A first program in C
- temperature conversion, C version
- temperature conversion with averaging
- temperature conversion, Scheme version 1
- temperature conversion, Scheme version 2
Reading- Getting Started with C Programming
| basics of C syntax, editing, compiling, and running |
4: lab | More C with eSpeak and Makefiles | Example- eSpeakExample1.c
- eSpeakExample2.c
Reading- More Linux (Background processes, autocompletion, manual, printing)
- Still More Linux (Files and File Permissions)
- Intro. to eSpeak and Makefiles
- eSpeakPackage.h
- Sound on MathLAN Workstations
| additional Linux commands, use of eSpeakPackage |
5: lab | Using the Scribbler 2 Robot and Mechanics of Basic Input | DemoExample- pirates.c
- spirit-song-full.c
- earsHangLow.c
- spirit-song.c
- quarts-rev.c
- quarts-gallons.c
Reading- Programming with the Scribbler 2
- Mechanics of Basic Input
- MyroC 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- quarts.c
- printf-formatting.c
Reading | |
3: lab | Conditionals with the Scribbler 2 | Example- smallest3-1.c
- smallest3-2.c
- smallest3-3.c
- smallest3-4.c
- integer-words.c
- light-switch.c
- sensor-use.c
- light-sensor-example.c
- conditional-lightSensor-1.c
- conditional-lightSensor-2.c
- light-sensor-switch.c
- blocking-nonblocking.c
Reading- Boolean Values and Expressions
- An introduction to Conditional Statements in C
- Scribbler 2 Sensors and Motion
- Diagram of Scribbler 2 sensors and function calls
| use of sensors in controlling the Scribbler 2 |
4: lab | Loops and Scribbler 2 Motion | Example- ice-cream-truck.c
- robot-dance.c
- while-obstacle.c
- do-while-beep.c
- 3-loops.c
Reading | combining sensors, motion, and repeated actions |
5: lab | Simple Simulations and More Program Management: Functions, Value Parameters, Assertions, | Example- couple-1.c
- couple-2.c
- couple-3.c
- couple-4.c
- couple-5.c
- couple-6.c
- quadratic.c
- coins.c
- yoyo-program.c
Reading- Introduction to Simulation
- Program Management with Functions and Assertions
| introductory simulations and functions with and without value parameters and return values |
6: project | Project: Robot Actions | — — — | |
|
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- pi-sim.c
- value-param-example.c
- add2.c
- couple-6.c
- lab-value-param.c
- homework-value-param.c
Reading | storage allocation within the run-time stack |
3: lab | Functions with Addresses as Parameters | Example- func-sphere.c
- perim-area-1.c
- perim-area-2.c
- perim-area-2a.c
- func-exercise-1.c
- func-exercise-2.c
- quadratic-two-roots.c
- func-exercise-3.c
Reading- Functions with Addresses as Parameters
| experiments with values and addresses as parameters |
4: lab | Arrays | Example- max-min.c
- array-scale.c
- array-move.c
- photographer.c
- max-array.c
Reading | array storage, base addresses, indices |
5: lab | Function Pointers, Parameters, and Arrays, Program Correctness, and Testing | Example- circle-circum-area-1.c
- circle-circum-area-2.c
- circle-circum-area-3.c
- func-parm.c
- func-parm-arrays.c
- motors-test.c
- object-avoid.c
- follower-test.c
- rand-beep.c
- get-ir.c
Reading- Function Pointers (Optional)
- Correctness and Testing
| notes on pre- and post-conditions |
6: intro. | Overview of Characters, Strings, and I/O | Example- counting-chars.c
- char-example.c
Reading- Characters, Strings, and I/O: An Overview
| |
7: lab | Characters and Strings | Example- character-example.c
- io-NATO.c
- string-example-1.c
- string-example-2.c
- string-intro.c
Reading- Characters in C
- Strings 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 |
|
module 011: Characters, Strings, and I/O |
---|
3: lab | Data input with scanf | Example- scanf-example-1-2.c
- scanf-example-3.c
- scanf-example.c
- scanf-char.c
- i-o-example-1a.c
- i-o-example-1b.c
- i-o-example-2.c
- i-o-example-3.c
- i-o-example-4.c
Reading | Use of scanf and format strings for reading |
4: lab | Character-by-Character Input and Output | Example- option-prog-1.c
- option-prog-2.c
- scanf-s-test-1.c
- scanf-s-test-2.c
- get-3-char.c
- getchar-example.c
- input-examples.c
Reading- Character-by-character Input and Output
| Use of getchar, putchar, printf |
5: project | Project: Robot Follows Typed Commands | — — — | |
|
unit : Data Representation |
---|
1: intro. | Overview of Number Representation | Reading- Representation of Numbers: Unit Overview
| |
2: lab | Representation of Integers | Reading- Binary Representation of Integers
- Representation of Signed Integers
Utility program- Program integer-sizes.c to display sizes of integer data types
- Program integer-ranges.c to display ranges of integer data types
- Program integer-rep.c to display binary representations of integers
- Program integer-rep.ss (in Scheme) to represent binary representations of integers
| 3 representations of integers |
3: lab | Representation of Floating-point Numbers | Reading- Binary Representation of Floating-point Numbers
| IEEE floating-point representation |
4: lab | Consequences of Data Representation and Use of the gdb Debugger | Reading- Consequences of Data Representation on Programming
- Debugging with GNU Debugger: a GDB Tutorial by Samuel Huang from the University of Maryland
| |
5: lab | Machine-level Explorations | Reading- Machine-level Operations, Bit Manipulation, and Unions
reading- King, Section 20.1, pages 509-515
- Kernighan and Ritchie, Section 2.9, pages 48-49
| bit-level operations |
|
module 100: Grouping Data and Image Processing with the Scribbler 2 |
---|
1: intro. | Overview of Grouping Data | Reading- Grouping data and image processing with the Scribbler 2: An Overview
| |
2: lab | Grouping Data: Structs | Example- square-move-1.c
- square-move-2.c
- square-move-3.c
- square-move-4.c
- square-move-5.c
- square-move-6.c
- test-scores-1.c
- test-scores-2.c
- test-scores-3.c
Reading | syntax, semantics, and applications of structs |
3: lab | Grouping Data: 2-dimensional Arrays | Example- city-precipitation.c
- 2D-array.c
Reading | |
4: lab | Image Storage and Processing | Example- picture-splice.c
- 2D-array-with-proc.c
| storage of pixel data in a struct with a 2D array |
5: lab | Insertion Sort | reading | |
6: project | Project: Picture Suite | — — — | |
|
module 101: Dynamic Memory, Pointers, and Linked Lists |
---|
-8: project | Project: Music Composition | — — — | |
-7: Project | Project: Robot Command Sequence | — — — | |
1: intro. | Pointers and Dynamic Memory | — — — | |
2: lab | Memory Allocation and Pointers | — — — | introduction to pointers and dynamic memory |
3: lab | Scheme-like Lists in C | — — — | insertion and deletion at front of linked lists |
4: lab | Linked-lists in C | — — — | basic list operations |
5: lab | Linked Lists for a Movie | — — — | movie application for lists |
6: lab | Program Management Header Files | reading | division of programs into multiple files |
|
module 110: Stacks and Queues |
---|
1: intro. | Abstract Data Types: Stacks and Queues | — — — | |
2: lab | Stacks | — — — | array and linked-list implementations of stacks |
3: project | Project: Comparing Stack Implementations | — — — | |
4: lab | Bash Scripts | Reading | using bash scripts for testing |
5: lab | Queues | — — — | array and linked-list implementations of queues |
6: project | Project: Comparing Stack Implementations | project | |
|
module 111: Imperative Problem Solving, Robots, and Varieties of Input and Output |
---|
1: intro. | Overview of Command-line Arguments and Files | — — — | |
2: lab | Command-line Arguments | — — — | focuses upon arrays of strings and string processing |
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 |
5: project | Project: Robot Parade | — — — | builds on earlier project for user control of robots |