Computer Science 23
schedule and notes


Note that we plan to use all x-hour periods.  The last two weeks of the course is held over for projects - there will be no
lectures but there will be group design reviews and code reviews. See the schedule below. This is an initial schedule.
Things may change.

Week 1  March 30-April 3

 
Lecture 1     Monday             Getting Started                           
                     

Lecture 2     Wedneday        
The Linux Shell and Commands

***Lab1  (Shell Commands)  goes out

Lab              Thursday           Work through "Getting Started", demo of  Garcia robot

Lecture 3     Friday                The Linux Shell and Commands (continued)    

Week 2  April 6-10

Lecture 3    Monday                Shell Programming  

***Lab2  (Shell Programming) goes out

Lecture 4    Wednesday          Shell Programming (continued)

Lab(Lecture 5) Thursday        Introduction to C

Lecture 6    Friday                   Preprocessor, Functions, Data Structures, Arrays, and Strings

Please read Chapters 2 and 3 from the text over the weekend. Because this is a crash course
in C you'll need to do reading of the book to supplement class and the notes.

Week  3 April 13-17

***Sunday 12 AM 
Lab2 in

Lecture 7     Monday                Standard IO Lib and C/OS Interface  

***Lab3 (C Programming) goes out

Lecture 8     Wednesday          Pesky Pointers

-- I see the book as a reference that you can dig into for the details and examples but we will not work
-- through the book in the classic sense of a textbook. But I would like to point to a number of chapters
-- that if you read closely will help with your programming - I guarantee they will improve your software.
--
-- Please read this week:

-- Chapter 8: Arrays
-- Chapter 9: Strings
-- Chapter 10: Data files
--
--
-- A good understand of how to manage strings and files will be of great help to you. Please read these
-- chapters even if it is a cursory read (detailed read is better of course, but I know you are loaded).
-- Do your best to read as much as you can.

-- Note, I do understand that reading 6 chapters of a book in a week is substantial. Here is my
-- tip. You will use the book as a minimum to gain understanding in an area that
-- you are progarmming. For example Lab3 uses arrays, strings, and file IO. So consult the
-- the book for examples to reinforce what we discuss in class and what is in the class notes.
-- Now, if you have time read through the chapters. You can skip the case studies. The
-- message: do not get overwhelmed by the reading. Read what you need!

Lab                 Thursday         Pesky Pointers (continued)

More chapters over the weekend read:

-- Chapter 11: Arrays, Address, Pointers
-- Chapter12: Structures
-- Chapter 10: Data files

Lecture 9     Friday                   Pointers Continued and Dynamic Memory Allocation


Week  4 April 20-24

***Sunday 12 AM Lab3 in

Lecture 10     Monday              Searching the Web         
               

Read
-- Chapter 13: Dynamic Data Structutres
-- Search Engine paper.

***Lab4  (Crawler)  goes out

Lecture 11     Wednesday            Design Methodology  

Lab(Lecture 12)  Thursday          TinySearch Engine: Crawler Design
                                                         
Lecture 13    Friday                     TinySearch Engine:  Crawler Data Structure Design and
                                                    The Make Utility

-- Two recitations on gdb -
Debugging your crawler segfaults!

Tutorial repeated at two sessions. Please attend. Go to both if you like.

Lab               Friday       5-6 PM   Note, we'll cover The Art of Debugging in more detail later (Nick)

Lab               Saturday   3-4PM   Repeat (Nick) some notes and code 

Week  5 April 27-May 1

***Sunday 12 AM Lab4 in

*** Well done - this is a major milestone in the course. Now you have
*** the crawelr under your belt lets look at the design of of the next component
*** of the TinySearch Engine

Lecture 11    Monday               TinySearch Engine: Indexer Design      
                    

***Lab5  (Indexer) goes out

Lecture 12    Wednesday          The Art of Debugging
                                               
Lab              Thursday               Pizza and Pointers:
                                                  The CS23 famous pointers quiz (ungraded - fun, come puzzle the wonders of ptrs)
                                                   2009 - Quiz and recitation on pesky pointers
                                                   2008 - Quiz and recitation on pesky pointers
                                                   2007 - Quiz and recitation on pesky pointers
                           
Lecture 13    Friday       
          The Art of Testing (only have hand written notes for this - I'll send PDF)   

Week  6 May 4-8

***Sunday 12 AM Lab5 in

Lecture 14    Monday               The Art of Testing: Unit Testing 

***Lab6 (Query Engine) goes out
  
Lecture 15    Wednesday           I'm very excited that our very own Doug McIlroy will come give a talk. 

                                                  Checkout Doug's bio. - among the many things Doug has done in his career is to
                                                  work on the development of Unix - check out utilities he invented and/or
                                                  coded, including pipes, echo, spell, others. Doug is an adjunct professor at
                                                  Dartmouth CS and also elected to the National Academy of Engineering
                                                  for his many contributions to Computer Science.

Lab              Thursday               git - The Stupid Content Tracker
 

Lecture 16    Friday                  Socket Programming  

                                                        
Week  7 May 11-15

Lecture 17    Monday               Socket Programming (continued)
 
***Tuesday 12 AM Lab3 in

Lecture 18    Wednesday          Processes, threads, mutex

***Lab7 (Socket Programming) goes out                 

Lab               Thursday             PROJECT: Garcia Tutorial by Nick Foti [pdf, ppt]

-- Projects kickoff
-- Announce project groups and project.
                      
Lecture 19    Friday                 PROJECT: Garcia Tutorial by Nick Foti [pdf, ppt]

Week  8 May 18-22 

***Sunday 12 AM Lab7 in

****END OF LABS***PROJECTS START******

Lecture 20    Monday             PROJECT: GTK Tutorial by Jonghoon Choi [lecture notes, slides]  
                                                  
      

Lecture 21    Wednesday         No class (project)

Lab              Thursday             No class (project)

-- 4-7 PM Thursday May 21 design review.
                      
Lecture 22     Friday                No class (project)

Week  9 May 25-29

No class: project

-- 4-7 PM Wednesday May 27 code review

Week  10 June 2-5

No class: project

-- 4-6 PM Tuesday June 2 demo or die day.

-- 12 AM Wed June 3  project reports due.

See the project page for the remaining schedule and for important milestones and what is needed for those
milestones.