CSCI 140 Course Schedule and Homework


WEEK 1: 1/17 - 1/21

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 Thursday the 20th.
* 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: 1/24 - 1/28

Last day to drop without a "W": Friday, January 28th

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

WEEK 3: 1/31 - 2/4

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, Unicode-encoded (a person whose name uses a non-Latin script). Due Thursday 2/10.
* Multimedia file formats: "MP3 lecture"
* Gates: NOT, AND, OR, XOR, etc.

WEEK 4: 2/7 - 2/11

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 Thursday 2/17.
* Circuits: adders, multiplexers, etc.
* von Neumann architecture.
* Fetch-execute cycle.

WEEK 5: 2/14 - 2/18

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: 2/21 - 2/25

Content: Problem Solving and algorithms (chapter 7).
Homework: Read pp. 195-237. Problems from Chapter 6, due Thursday 3/3: 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: 2/28 - 3/4

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: 3/7 - 3/11

The midterm exam is Thursday, March 10th

Homework: Read pp. 245-276.

WEEK 9: 3/21 - 3/25

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

WEEK 10: 3/28 - 4/1

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

WEEK 11: 4/4 - 4/8

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

WEEK 12: 4/11 - 4/15

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

WEEK 13: 4/18 - 4/22

No class Thursday, April 21st (Holy Thursday)

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

WEEK 14: 4/25 - 4/29

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

WEEK 15: 5/2 - 5/6

Thursday, May 5th is the last day of class
Content: Some Theory.
Homework: Read pp. 549-582.
* Turing machines
* The halting problem
* Automata
* Open Source Software Development

Finals

The final is Tuesday, May 17th, 12:00-1:50PM