CSCI 140 Course Schedule and Homework


WEEK 1: 8/26 - 8/30

Content: History of Computer Science, Number Systems (chapters 1 and 2).
Homework: Read pp. 3-46. Send at least three questions about CS to me by Wednesday the 28th.
* Course overview, the "onion" metaphor.
* Binary numbers and their importance in computing, "be a byte" game.
* Other number systems, converting between them, and arithmetic (worksheet?).
* 10's complement and 2's complement.

WEEK 2: 9/2 - 9/6

No class Monday, September 2nd (Labor Day)

Content: Data Representation (chapter 3).
Homework: Read pp. 54-82. Problems from Chapter 2: 6-11, 23, 28, 33, 34, 38, 39 due Wednesday 9/11.
* Analog and digital data.
* Text: ASCII, Unicode; writing names in binary.
* Data Compression and Entropy, Shannon experiment.

WEEK 3: 9/9 - 9/13

Content: Gates and circuits (chapter 4).
Homework: Read pp. 91-111. Problems from Chapter 3: 1-20, 38, 40, 47, 51, 53. Write the name of a famous person you admire in binary, UTF-16-encoded (a person whose name uses a non-Latin script). Due Wednesday 9/18.
* Multimedia file formats: "MP3 lecture"
* Gates: NOT, AND, OR, XOR, etc.

WEEK 4: 9/16 - 9/20

Content: More on circuits (ch. 4), Computing components (chapter 5).
Homework: Read pp. 119-144. Problems from Chapter 4: 1-17, 43, 50, 55, 57, 59, 61 due Wednesday 9/25.
* Circuits: adders, multiplexers, etc.
* von Neumann architecture.
* Fetch-execute cycle.

WEEK 5: 9/23 - 9/27

Content: Low-Level Programming Languages and Pseudocode (chapter 6).
Homework: Read pp. 151-188. No written homework on Ch. 5.
* Low-level programming: instruction sets, machine language, assembly
* PEP/8 architecture
* High-level vs. low-level languages: compilers and interpreters

WEEK 6: 9/30 - 10/4

Content: Problem Solving and algorithms (chapter 7).
Homework: Read pp. 195-237. Problems from Chapter 6, due Wednesday 10/9: 1-20, 53, 55. Write programs for outputting your name in PEP/7 machine language and assembly language.
* Algorithms and pseudocode.
* Recursion.
* Sorting algorithms.

WEEK 7: 10/7 - 10/11

Content: More on programming languages, Object-Oriented stuff (Chapter 9).
Homework: Read pp. 285-325.
* Survey programming languages, imperative, OO, functional, scripting, etc.
* Programming paradigms: top-down, OOP, event-driven, etc.

WEEK 8: 10/14 - 10/18

The midterm exam is Friday, October 18th

Homework: Read pp. 245-276.

WEEK 9: 10/21 - 10/25

No class Monday or Tuesday, October 21-22 (Fall Break)

Content: Programming with Scratch (not in text book).
Homework: Read pp. 333-380. Write a program of your choosing in Scratch. Due Friday 11/1.
* Topics in software engineering.
* Introduction to Scratch
* More Scratch; event-driven scratch

WEEK 10: 10/28 - 11/1

* Recursive functions
* Introduction to data structures
* Trees, lists, graphs, and applications

WEEK 11: 11/4 - 11/8

* Security, public key cryptography
* Hacking, cracking
* Key signing party

WEEK 12: 11/11 - 11/15

Homework: Ambiguous sentences + tic-tac-toe, due Monday November 25. Read chapter 13.
* Artificial intelligence
* Conversational agents
* Natural Language Processing
* Games!

WEEK 13: 11/18 - 11/22

Content: Networking, Internet, WWW (chapters 15 and 16).
Homework: Read pp. 497-542. Chapter 15, problems 1-25, due Friday 12/6.
* Intro to networks, network protocols
* TCP/IP, DNS, MIME
* Web, blogs, cookies, HTML, JavaScript, XML, ...

WEEK 14: 11/25 - 11/29

No class Wednesday November 27th or Friday the 29th (Thanksgiving)

Exam Practice: Problems from Chapter 10: 1-18, 49, 50, 55, 57, 58, 59.
* What is an OS? Memory management
* Process management, scheduling
* File systems, file types, file access
* Disk scheduling

WEEK 15: 12/2 - 12/6

Content: Some Theory.
Homework: Read pp. 549-582.
* Turing machines
* The halting problem
* Automata
* Open Source Software Development

WEEK 16: 12/9

Monday, December 9th is the last day of class.
The final is Friday, December 13th, 12:00-1:50PM