| Lecture |
Objectives |
Readings |
Handouts |
Lecture 1
Introduction |
Introduction to the course. Programming and programs. Karel the Robot.
Karel World. First Karel program. |
Pattis:
Introduction; Chapter 1
Tutorial:
Lessons 1,
2,
and 3
|
Slides |
Lecture 2
Simpe Programs |
Karel basic commands. Compilation and errors. Defining new instructions.
Block. |
Pattis:
Chapter 2 (with exercises)
Chapter 3, Sections 3.1 - 3.4
Tutorial:
Lessons 4
|
Slides |
Lecture 3
Program design |
Programs with new instructions. Programming as problem solving. Stepwise
refinement. Design Tree. |
Pattis:
Complete Chapter 3
|
Slides |
Lecture 4
Conditional Execution |
Conditions. If-then instruction. If-else instruction. |
Pattis:
Chapter 4
Tutorial:
Lessons 6,
7,
9
|
Slides |
Lecture 5
Loops |
Iterate loop. While loop. Embedded loops. Loop invariants. Desinging
loops. |
Pattis:
Chapter 5
Tutorial:
Lessons 8,
11
|
Slides |
Lecture 6
Advanced programming with Karel |
Nested while loop. Loops with conditional statements. Recursion |
Pattis:
Chapter 5, Sections 5.7-5.8
Chapter 6, Sections 6.1
|
Slides |
Lecture 7
Introduction to C |
C logistics. First C program. C tools, compilation and errors |
Perry:
Chapter 1; Chapter 2 (until "Kinds of Data"); Chapter 3 (first run) |
Slides |
Lecture 8
Data Types and Expressions |
C Data Types. Arithmetic operations. Using printf. Print formatting specifications. |
Perry:
Chapter 2 (starting from "Kinds of Data"); Chapter 4; Chapter 9 (first run)
|
Slides |
Lecture 9
Variables |
Variables. Declaration and initialization. Assignment. Numeric data types.
Implicit type conversion. Program readability. Comments. Program design. |
Perry:
Chapter 3; Chapter 5; Chapter 9 |
Slides |
Lecture 10
Simple Programs |
Defined constants. Preprocessor. Input. Simple programs with input. |
Perry:
Chapter 7; Chapter 8 |
Slides |
Lecture 11
Simple Loops |
Expressions. Statements. Block. While loop. Increment and decrement. Compound
assignmenmts (+=; -=; *=; /=, %=). |
Perry:
Chapter 10; Chapter 14 (first run) |
Slides |
Lecture 12
Loops and tables |
Relational operators (< > <= >= != ==); Programming patterns.
Printing tables with while loop; Counter-controlled and sentinel-controlled
loops. Summing up an input. while loop vs. until loop; After this lecture
you should get a good understanding of basic loops and be able to write
simple programs with counter-controlled and sentinel-controlled loops, in
particular, programs that process and print tables |
Perry:
Chapter 11: Testing data; Chapter 14 |
Slides |
Lecture 13
Conditionals |
If and if-else control structures. Nested Ifs, ifs inside loops. Calculating
min and max. Conditional operator. |
Perry:
Chapter 11; Chapter 13: Hello Conditional |
Slides |
Lecture 14
Character Processing |
Char data type. Typecasting. Char input and output. Filter programs. |
Perry:
Chapter 10: Typecasting; Chapter 18. |
Slides |
Lecture 15
Complex Conditions |
Else-if construct. Logical operators. Programs with complex conditions. |
Perry:
Chapter 12 |
Slides |
Lecture 16
For and Switch |
More examples of complex conditions. Switch. Switch vs. else-if.For loop.
For loop vs. while loop. |
Perry:
Chapter 15; Chapter 17 |
Slides |
Lecture 17
Array Processing |
Arrays. Array input and output. Array processing with for. |
Perry:
Chapters 20 to 22 |
Slides |
Lecture 18
Functions |
Functions. Parameter passing by value. Function prototypes. |
Perry:
Chapter 30; First reading of to Chapters 31 and 32 |
Slides |
Lecture19
Arrays and Functions |
Prameter passing by value and by refernce. Character arrays, strings,
processing, initializing, and printing strings. |
Perry:
Chapters 6, 31, 32 |
Slides |
Lecture 20
Nested Loops |
Nested loops, bar charts, string search. Reading and processing standard
input line by line. |
Perry: Chapter 19, Chapter 22
|
Slides |
Lecture 21
Pointers |
Memory and variables. Pointers. Operations with pointers. Pointers and
functions. Pointers and arrays. Address Arithmetic. Pointers and char arrays.
|
Perry: Chapter 24. Chapter 25 (First reading)
Ted Jensen:
Pointers and Arrays
in C: Chapters 1-4
Stanford CS Ed. Library:
Pointers and Memory
|
Slides |
Lecture 22
Two-Dimensional Arrays |
Two-Dimensional Arrays. Arrays of Pointers. |
Perry: Chapter 25. Chapter 26
Ted Jensen:
Pointers and Arrays
in C: Chapters 6-9
|
Slides |
Lecture 23
Recursion |
Recursive defintions, Recursive functions. Implementation of recursion.
|
Perry:
|
Slides
|