CS 101: Introduction to Computer Science
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.

Detailed instructions

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.

Detailed instructions