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 Course Syllabus
 CS 101 Home Page CS 101 Home Page
 About CS 101 About CS 101
 Seven Big Ideas Seven Big Ideas
 The Study Cycle The Study Cycle
- To-Do
 Get the required textbook Get the required textbook
 Complete the pre-survey 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 Welcome to CS 101
 Tour of Resources Tour of Resources
 Metacognition Metacognition
- Theory
 Intro Videos Intro Videos
- Act01
         Unit01 Activity Packet Unit01 Activity Packet
- Practice
 Virtual Machine Virtual Machine
- Lab01
         Lightbot puzzle solving 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 Binary Videos
- Act02
         Unit02 Activity Packet Unit02 Activity Packet
- Practice
 Logisim Tutorial Logisim Tutorial
- Lab02
         Logisim ripple carry adder 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 Machine Videos
- Act03
         Unit03 Activity Packet Unit03 Activity Packet
- Practice
 Brookshear Machine Brookshear Machine Language Description Language Description
- Lab03
         CPU and RAM simulator 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 OS/Virtual Videos
- Act04
         Unit04 Activity Packet Unit04 Activity Packet
- Practice
 Command Line Basics Command Line Basics
- Lab04
         Unix commands and files 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 Internet Videos
- Act05
         Unit05 Activity Packet Unit05 Activity Packet
- Practice
 Networking Tutorials Networking Tutorials
- Lab05
         Wireshark, mtr, web tools 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 Security Videos
- Act06
         Unit06 Activity Packet Unit06 Activity Packet
- Practice
 Command Line Review Command Line Review
- Lab06
         Telnet vs ssh, encryption 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 Python Videos 1
- Act07
         Unit07 Activity Packet Unit07 Activity Packet
- Practice
 Learn Python, Part 1: Numbers Learn Python, Part 1: Numbers
 Learn Python, Part 5: Variables Learn Python, Part 5: Variables
- Lab07
         Introduction to Python 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 Python Videos 2
- Act08
         Unit08 Activity Packet Unit08 Activity Packet
- Practice
 Learn Python, Part 2: Logic Expressions Learn Python, Part 2: Logic Expressions
 Learn Python, Part 6: Conditionals Learn Python, Part 6: Conditionals
 Finch Tutorial Finch Tutorial
- Lab08
         Finch robot dance party 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 SW Eng Videos
- Act09
         Unit09 Activity Packet Unit09 Activity Packet
- Practice
 Learn Python, Part 3: Words and Letters Learn Python, Part 3: Words and Letters
 Learn Python, Part 4: Changing Text Learn Python, Part 4: Changing Text
 Python Tutor Python Tutor
- Lab09
         Static analysis, debugging 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 Python Videos 3
- Act10
         Unit10 Activity Packet Unit10 Activity Packet
- Practice
 Learn Python, Part 7: Lists Learn Python, Part 7: Lists
 Learn Python, Part 8: Loops Learn Python, Part 8: Loops
- Lab10
         Visualizing binary trees 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 Database Videos
- Act11
         Unit11 Activity Packet Unit11 Activity Packet
- Practice
 Learn SQL in 20 Minutes (Tutorialzine) Learn SQL in 20 Minutes (Tutorialzine)
- Lab11
         Exploring your SQLite data 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 AI/Search Videos
- Act12
         Unit12 Activity Packet Unit12 Activity Packet
- Practice
 Learn Python, Part 9: Dictionaries Learn Python, Part 9: Dictionaries
 Learn Python, Part 10: Randomness and Beyond Learn Python, Part 10: Randomness and Beyond
- Lab12
         Finch robot obstacle course 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.