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.