[Note: this webpage last modified Tuesday, 09-Apr-2013 16:46:32 EDT]
This web-page will be kept up to date with the required reading to perform before each lecture and with the topics we will cover.
I assign some readings from appropriate online sources. You should also consider the in-class code that is typed during class as part of your assigned reading -- after class and before the next class, you should download the code, run it, and understand it fully.
For C programming, here are a few additional references where you can look up more details or maybe different explanations of what we have talked about in class.
And here is a nice reference of all the different keywords and operators available in C: C Programming/Reference Tables.
Here I will post the readings and perhaps some brief descriptions of what is covered each day in class.
Week | Topics |
---|---|
Jan 8, 10 | First day: course overview, syllabus, what is an algorithm, how does a CPU work, assembly language. Watch video: syllabus, etc. Watch video: installing putty, logging into CS, handing in HW, file names and extensions on both Windows and Linux/Mac, directories and full versus partial file names. Second day: review from first day, Scratch, basic ideas of programming. Note well: you need to get a C in this class to move on to other CS classes! Reading: Mar 28 lecture notes on history of computing, and May 13 lecture notes on Scratch from here |
Jan 15, 17 | Programming: more assembly and Scratch. Concepts: memory, CPU, load/store paradigm of assembly language, basic types of programming commands. Watch video: installing Scratch, basics of Scratch. Memorize: arithmetic sum: 1 + 2 + 3 + ... + n = n(n+1)/2. Fun: Scratch Reading: Apr 29 lecture notes on assembly language from here |
Jan 22, 24 | C programming: variables, functions, syntax rules, data types, overflow, printf, scanf, hex, binary, ASCII, arithmetic, integer versus float, mod, #include, #define, arrays. Watch video: installing, compiling, running C programs, error messages, debugging with printf. Reading: look through links above about C. You don't need to understand all of it, but look through it (now and again regularly). Fun: conversion (deg to C, etc.) |
Jan 29, 31 | C programming: if/else, for loop, while loop. Fun: game (choose from - tic-tac-toe, hang man, arithmetic, typing, high-low guessing, ...) |
Feb 5, 7 | More with loops, if/else. Fun: binary-decimal converter, simple encryption, ASCII art. |
Feb 12, 14 | First exam Feb 12 |
Feb 19, 21 | C programming: pointers and arrays, file input/output, pointer arithmetic (difference between pre/post ++, +=, ...) Fun: swap variables, save-game feature on games, text-adventure game. |
Feb 26, 28 | C programming: malloc/free, gdb, memory leaks, buffer overruns (security), time/clock. Algorithms: linear and binary search (read numbers from file, must use malloc/free...), sorting (built-in sort function) Concepts: running time (measured and theoretical) Fun: security/hacking, running time experiments. |
Mar 5, 7 | Catch-up week - catch up if needed, or if on time then some more example programs. Fun: factoring/primes, counting letter/word frequencies in text, Eliza, robots. |
Mar 12, 14 | Spring break -- no classes |
Mar 19, 21 | C programming: struct, enum, typedef, union, network programming/sockets. Fun: another game or game-AI, making use of everything we know so far. |
Mar 26, 28 | Second exam Mar 28 Note: the next class to take after 151 is CS 201 if you will be a CS minor/major. You must have a grade of C in this class to take that class. |
Apr 2, 4 | If we're on time, then look at some "cool" topics. Concepts: P versus NP, halting problem, randomized algorithm. |
Apr 9, 11 | To be determined. |
Apr 16, 18 | To be determined. |
Apr 23, 25 | Project presentations Aug 25 |
Apr 29-May 3 | Exam week, projects due by May 3 |