CSE 303 - Schedule and Lecture Notes, Winter 2010

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 4

(L1) Introduction: class overview and shell basics

lecture notes

 

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

lecture notes

 

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

lecture notes

January 11

(L3) Linux and shells: continued and expanded with part of lecture 4

lecture notes

 

(L4) Linux and shells: more shell scripts

(L5) Linux and shells: regular expressions and grep

HW1 due

lecture notes


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

lecture notes

January 18

Martin Luther King Day Holiday

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

lecture notes

 

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

HW2 due

lecture notes

January 25

(L9) C: arrays and strings

lecture notes


 

(L10) Tools: debuggers (gdb)

C: file I/O

lecture notes

(L11) Tools: version-control, svn

lecture notes

February 1

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

HW3 due

lecture notes


(L13) C: data structures and memory management

lecture notes


(L14) Society and ethics

Impact of computer engineering solutions (brain-controlled computers/robot)

lecture notes

February 8

 

(L15) C: the C preprocessor

(L15) Tools: linker

lecture notes

 

(L16) Tools: build scripts, make

lecture notes

 

MIDTERM

February 15

Presidents Day Holiday

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

lecture notes

(L18) C++: manipulating objects and inheritance

lecture notes

HW4 due

February 22

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

lecture notes

HW4 due

 

(L20) C++: templates and STL

lecture notes

 

(L21) Society and ethics

Professional and ethical responsibility (ethics of hacking and cracking)

lecture notes

March 1

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

lecture notes

HW5 due

(L23) Software Eng: writing robust and readable code

C/C++: const type qualifier

lecture notes

 

(L24) Society and ethics

Contemporary Issues of Computing (Internet overuse?)

lecture notes

March 8

(L25) Society and ethics

Impact of computer engineering solutions (RFID)

lecture notes

HW6 due

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

lecture notes

 

(L27) Class wrap-up & review

lecture notes

Short paper due

March 15

FINAL EXAM WEEK

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

 

Lecture 1

Lecture 2

Lecture 3

Lecture 4

Lecture 5

Lecture 6

  1. Readings: please read the following sections from the Linux Pocket Guide
    1. More Powerful Manipulations (pages 80-81).
  2. 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. 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 [Note that the output may be different for you when you try this program]
    5. pointer-to-pointer.c and pointer-to-pointer.output.txt
    6. format.c and format.output.txt
    7. fileIO.c, file1.txt, and fileIO.output.txt [Very useful for hw3]
  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. See above lecture 8 and 9 extras. We looked at some of them.
  3. Lecture 10 extras:
    1. arguments.c and arguments.output.txt, output when executed with arguments "Hello there" Hi world
    2. debug_me.c and fixed.c
  4. 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

Lecture 27