CSE 303 - Schedule and Lecture Notes, Winter 2007

Course Schedule

Please note that the schedule is subject to minor changes based on our progess.

The lecture slides, the list of readings for each class, and other extra information are at the bottom of this page.

 

Week of
Monday
Tuedsay
Wednesday
Thurday
Friday
January 1
 

(L1) Introduction: class overview and shell basics

lecture notes

 

(L2) Linux and shells: filesystem, processes, users, and command line

lecture notes

January 8

(L3) Linux and shells: emacs, I/O redirection, shell script introduction

lecture notes

 

(L4) Linux and shells: regular expressions and grep

Guest lecture by Prof. Grossman

lecture notes

(L5) Linux and shells: shell variables, more shell scripts

HW1 due

lecture notes

January 15

Martin Luther King Day Holiday

(L6) Linux and shells: utilities (find, sed, and awk)

lecture notes

 

(L7) Introduction to C: hello world, the stack, and intro to pointers

lecture notes

January 22

(L8) C: structure of a C program, expressions, dangling pointers, and printf/scanf

HW2 due

lecture notes


 

(L9) C: arrays and strings

lecture notes

(L10) Tools: debuggers (gdb)

C: file I/O

lecture notes

January 29

(L11) C: structs, heap, and type casts

lecture notes


(L12) C: data structures and memory management

HW3 due

lecture notes


(L13) Society and ethics

Impact of computer engineering solutions (RFID)

lecture notes

February 5

(L14) C: the C preprocessor

(L14) Tools: linker

lecture notes

 

(L15) Tools: build scripts, make

lecture notes

 

MIDTERM

February 12

(L15) Tools: more about makefiles

(L16) Introduction to C++ : hello world and our first C++ class

lecture notes

(L17) C++: manipulating objects and inheritance

lecture notes

(L18) C++: inheritance (virtual functions and abstract classes)

lecture notes

HW4 due

February 19
Presidents Day Holiday
 

(L19) C++: templates and STL

(L19) Tools: version-control, cvs

lecture notes

 

(L20) Society and ethics

Contemporary issues of computing (identity theft)

lecture notes

HW5 due

February 26

(L21) Software Eng: unit testing, stubs, and specifications

lecture notes

(L22) Software Eng: writing robust and readable code

C/C++: const type qualifier

lecture notes

 

(L23) Society and ethics

Professional and ethical responsability
(ethics of hacking or cracking)

lecture notes

March 5

(L24) Society and ethics

Contemporary issues and impact of computing solutions (YouTube)

HW6 due

lecture notes

(L25) C/C++: Threads and Concurrency Control

lecture notes

 

(L26) Tools: profilers (gprof)

Class wrap-up

lecture notes

Short paper due

(extended until Monday 11:59pm)

March 12

FINAL EXAM WEEK

Final on Thursday, March 15th, 8:30am-10:20am in our regular classroom

 

Lecture 1

Lecture 2

Lecture 3

Lecture 4

Lecture 5

Lecture 6

  1. Slides: lecture6.pdf
  2. Lecture 6 extras:
    1. Sed: ex1-commands.txt, ex1.txt, ex2-commands.txt, ex2.txt, ex3-commands.txt, ex3.c
    2. Awk: awk-commands.txt, grades.txt, grades2.txt
    3. Additional exercises for sed: sed-questions.txt and sed-answers.txt. Additional files for exercises: ex4.txt and brackets.txt
  3. Readings: please read the following sections from the Linux Pocket Guide
    1. More Powerful Manipulations (pages 80-81).
  4. Additional documentation:
    1. sed
    2. awk

Lecture 7

  1. Slides: lecture7.pdf
  2. Lecture 7 extras: Please take a careful look at the examples we went through together in class
    1. hello.c and hello.output.txt
    2. hello-experiments.c and hello-experiments.output.txt
    3. pointer.c and pointer.output.txt
  3. Readings: please read the following chapters from Programming in C
    1. Chapter 1, 2, and 3
    2. Chapter 11 (pages 235-240)

Lecture 8

  1. Slides: lecture8.pdf
  2. Lecture 8 extras: Please take a careful look at the examples we went through together in class
    1. scope.c and scope.output.txt
    2. bool.c and bool.output.txt
    3. null-pointer.c and null-pointer.output.txt
    4. dangling.c and dangling.output.txt
    5. pointer-to-pointer.c and pointer-to-pointer.output.txt
    6. format.c and format.output.txt
  3. Readings: please read the following chapters from Programming in C
    1. Skim chapters 4, 5, 6, and 8
    2. Chapter 11 Pointers and Functions (pages 254-259)
    3. Chapter 16 Formatted I/O (pages 348-359)

Lecture 9

  1. Slides: lecture9.pdf
  2. Lecture 9 extras: Please take a careful look at the examples we went through together in class
    1. simple-array.c and simple-array.output.txt
    2. array.c and array.output.txt . Additional examples are commented out in the code. Try to uncomment different examples to experiment with them.
    3. multi-array.c and multi-array.output.txt
    4. string.c and string.output.txt
  3. Readings: please read the following chapters from Programming in C
    1. Chapter 7, 10, and 11
    2. Chapter 8, Section "Functions and Arrays" (pp 137-152)

Lecture 10

  1. Slides: lecture10.pdf
  2. Lecture 10 extras: Please take a careful look at the example we went through together in class. This example is more complicated than what we have seen in previous lectures. If you are having a hard time understanding what is going on, please send me an email and we will go through it together.
    1. debug_me.c, file1.txt, file2.txt, and debug_me.output.txt. This is the output when running "debug_me file1.txt file2.txt". To try and debug this program, uncomment the call to the bug function at the end of main.
  3. Readings: please read the following chapters from Programming in C
    1. Chapter 18 (skip the first part about using the pre-processor for now. It will make sense after lecture 14).
    2. Chapter 16 "Input and Output Operations with Files" and "Special Functions for Working with Files" (pages 359-371)

Lecture 11

Lecture 12

Lecture 13

Lecture 14

Lecture 15

Lecture 16

Lecture 17

 

Lecture 18

 

Lecture 19

Lecture 20

Lecture 21

Lecture 22

Lecture 23

Lecture 24

Lecture 25

Lecture 26

Additional topics for C

There are a few small topics that we did not cover in class. You will not be evaluated on these topics, but I encourage you to read more about them

  1. Programming in C, Chapter 14, Section "Enumerated Data Types" (pp 321-324)
  2. Programming in C, Chapter 12 "Operations on Bits"
  3. Programming in C, Chapter 11, Section "Pointers to Functions" (pp 273-274)