James Madison University, Fall 2019 Semester
The following materials are subject to change throughout the semester.
Section numbers are from
Computer Science: An Overview, 12th edition.
Before the Semester
Aug 19 – Aug 25
- Reading
- Course Syllabus
- CS 101 Home Page
- About CS 101
- Seven Big Ideas
- The Study Cycle
- To-Do
- Get the required textbook
- Complete the pre-survey
Unit 1: Introduction
Aug 26 – Sep 01
- Concepts
- Algorithms, metacognition, history of computing, seven big ideas
- Reading
- Preface, Table of Contents
0.1 The Role of Algorithms
0.2 The History of Computing
0.3 An Outline of Our Study
0.4 Themes of Computer Science - Slides
- Welcome to CS 101
- Tour of Resources
- Metacognition
- Theory
- Intro Videos
- Act01 Unit01 Activity Packet
- Practice
- Virtual Machine
- Lab01 Lightbot puzzle solving
Unit 2: Data Storage
Sep 02 – Sep 08
- Concepts
- Logic gates, binary, hexadecimal, RAM, hard disk, ASCII, overflow
- Reading
- 1.1 Bits and Their Storage
1.2 Main Memory
1.3 Mass Storage
1.4 Representing Information as Bit Patterns
1.5 The Binary System - Theory
- Binary Videos
- Act02 Unit02 Activity Packet
- Practice
- Logisim Tutorial
- Lab02 Logisim ripple carry adder
Unit 3: Program Execution
Sep 09 – Sep 15
- Concepts
- How CPUs work, instructions, machine cycle, code vs data, masking
- Reading
- 2.1 Computer Architecture
2.2 Machine Language
2.3 Program Execution
2.4 Arithmetic/Logic - Theory
- Machine Videos
- Act03 Unit03 Activity Packet
- Practice
- Brookshear Machine Language Description
- Lab03 CPU and RAM simulator
Unit 4: Operating Systems
Sep 16 – Sep 22
- Concepts
- Job scheduling, multitasking, components of OS, firmware, processes
- Reading
- 3.1 The History of Operating Systems
3.2 Operating System Architecture
3.3 Coordinating the Machine's Activities - Theory
- OS/Virtual Videos
- Act04 Unit04 Activity Packet
- Practice
- Command Line Basics
- Lab04 Unix commands and files
Unit 5: Computer Networking
Sep 23 – Sep 29
- Concepts
- Protocols, routers, client/server, Internet, IP, DNS, URLs, HTML
- Reading
- 4.1 Network Fundamentals
4.2 The Internet
4.3 The World Wide Web - Theory
- Internet Videos
- Act05 Unit05 Activity Packet
- Practice
- Networking Tutorials
- Lab05 Wireshark, mtr, web tools
Unit 6: Information Security
Sep 30 – Oct 06
- Concepts
- Access control, privilege levels, malware, DoS, encryption, keys
- Reading
- 3.5 Operating System Security
4.5 Network Security and Encryption - Theory
- Security Videos
- Act06 Unit06 Activity Packet
- Practice
- Command Line Review
- Lab06 Telnet vs ssh, encryption
Project 1: Explore/Impact
Oct 07 – Oct 13
For the midterm project, you will work in groups of four to five students to write a collaborative research paper. You will also design a research poster about your topic and present what you have learned to the rest of the class.
Unit 7: Algorithms and Python
Oct 14 – Oct 20
- Concepts
- Primitives, pseudocode, problem solving, decisions, loop control
- Reading
- 5.1 The Concept of an Algorithm
5.2 Algorithm Representation
5.3 Algorithm Discovery
5.4 Iterative Structures - Theory
- Python Videos 1
- Act07 Unit07 Activity Packet
- Practice
- Learn Python, Part 1: Numbers
- Learn Python, Part 5: Variables
- Lab07 Introduction to Python
Unit 8: Programming Languages
Oct 21 – Oct 27
- Concepts
- Paradigms, compiler vs interpreter, variables, functions, scope
- Reading
- 6.1 Historical Perspective
6.2 Traditional Programming Concepts
6.3 Procedural Units - Theory
- Python Videos 2
- Act08 Unit08 Activity Packet
- Practice
- Learn Python, Part 2: Logic Expressions
- Learn Python, Part 6: Conditionals
- Finch Tutorial
- Lab08 Finch robot dance party
Unit 9: Software Engineering
Oct 28 – Nov 03
- Concepts
- Software life cycle, prototyping, coupling, cohesion, UML diagrams
- Reading
- 7.1 The Software Engineering Discipline
7.2 The Software Life Cycle
7.3 Software Engineering Methodologies
7.4 Modularity
7.5 Tools of the Trade - Theory
- SW Eng Videos
- Act09 Unit09 Activity Packet
- Practice
- Learn Python, Part 3: Words and Letters
- Learn Python, Part 4: Changing Text
- Python Tutor
- Lab09 Static analysis, debugging
Unit 10: Data Structures
Nov 04 – Nov 10
- Concepts
- Arrays, lists, stacks, queues, trees, pointers, contiguous vs linked
- Reading
- 8.1 Basic Data Structures
8.2 Related Concepts
8.3 Implementing Data Structures
8.4 A Short Case Study - Theory
- Python Videos 3
- Act10 Unit10 Activity Packet
- Practice
- Learn Python, Part 7: Lists
- Learn Python, Part 8: Loops
- Lab10 Visualizing binary trees
Unit 11: Database Systems
Nov 11 – Nov 17
- Concepts
- File system vs DBMS, schemas, relational model, SQL, data mining
- Reading
- 9.1 Database Fundamentals
9.2 The Relational Model
9.6 Data Mining
9.7 Social Impact of Database Technology - Theory
- Database Videos
- Act11 Unit11 Activity Packet
- Practice
- Learn SQL in 20 Minutes (Tutorialzine)
- Lab11 Exploring your SQLite data
Unit 12: Artificial Intelligence
Nov 18 – Dec 01
- Concepts
- Turing test, semantics, production systems, state graph, heuristics
- Reading
- 11.1 Intelligence and Machines
11.2 Perception
11.3 Reasoning
11.6 Robotics - Theory
- AI/Search Videos
- Act12 Unit12 Activity Packet
- Practice
- Learn Python, Part 9: Dictionaries
- Learn Python, Part 10: Randomness and Beyond
- Lab12 Finch robot obstacle course
Project 2: Create/Program
Dec 02 – Dec 08
For the final project, you will work with a partner to develop a complex program of your choosing. You will also answer questions about your program and describe the collaboration between you and your partner.