Course Schedule

[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.

Readings

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.

Readings/Topics Schedule

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