James Madison University, Fall 2021 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 23 – Aug 25
- Reading
- Course Syllabus
- CS 101 Home Page
- The Study Cycle
- To-Do
- Get the required textbook
- Complete the pre-survey
Unit 1: Introduction
Aug 25 – Aug 27
- Concepts
- Algorithms
- 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
- Tour of Resources
- Theory
- Intro Videos
- Exercise01 Unit01 Exercises
- Practice
- Lab01 Lightbot puzzle solving
Unit 2: Data Storage
Aug 30 – Sep 03
- 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
- Exercise02 Unit02 Exercises A Unit02 Exercises B
- Practice
- Logisim Tutorial
- Lab02 Logisim ripple carry adder
Unit 3: Program Execution
Sep 06 – Sep 10
- 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
- Exercise03 Unit03 Exercises A Unit03 Exercises B
- Practice
- Lab03 CPU and RAM simulator
Unit 4: Operating Systems and Computer Networking
Sep 13 – Sep 17
- Concepts
- Reading
- 3.1 The History of Operating Systems
3.2 Operating System Architecture
3.3 Coordinating the Machine's Activities
4.1 Network Fundamentals
4.2 The Internet
4.3 The World Wide Web - Theory
- OS and Network videos
- Exercises04 Unit04 Exercises A Unit04 Exercises B
- Practice
- Command Line Basics
- Lab04 Command Line and Web Pages
Review Units 1 through 4
Sep 21 – Sep 25
- Review
- Practice Exam on Canvas
Exam 1: Units 1 through 4
Sep 25 – Sep 27
- Exam 1
- On Canvas, must be completed by 5pm on Monday
Unit 5: Information Security
Sep 27 – Oct 01
- Concepts
- Access control, privilege levels, malware, DoS, encryption, keys
- Reading
- 3.5 Operating System Security
4.5 Network Security and Encryption - Theory
- Security Videos
- Exercise05 Unit05 Exercises A Unit05 Exercises B
- Practice
- Command Line Review
- Lab05 Telnet vs ssh, encryption
Project 1: Unit 1 - Unit 5 Topics
Oct 04 – Oct 08
Unit 6: Algorithms and Python
Oct 11 – Oct 15
- 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
- Exercise06 Unit06 Exercises A Unit06 Exercises B
- Practice
- Learn Python, Part 1: Numbers Learn Python, Part 5: Variables
- Start here until requested to pay Codecademy (1. Hello World) then go to another part of the site that is free but based on an older verision of Python, Python 2: Codecademy Python Syntax and (2. Strings and Console Output)
- Lab06 Introduction to Python
Guest Speaker 1 - Theory of Computation
Oct 18 – Oct 20
- Speaker
- Introduction to Theory of Computation
Unit 7: Programming Languages and Python Programming
Oct 25 – Oct 29
- 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
- Example of function calls Anohter example of function calls
- Exercise07 Unit07 Exercises A Unit07 Exercises B
- Practice
- Learn Python, Part 2: Logic Expressions
- Learn Python, Part 6: Conditionals
- Lab07 Finches and CodingBat
Exam 2: Units 5 through 7 and information from guest speaker
Oct 29 – Nov 01
- Exam 2
- On Canvas, must be completed by 5pm on Monday
Unit 8: Software Engineering
Nov 01 – Nov 05
- 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
- Lecture Slides
- SW Eng Videos
- Exericses08 Unit08 Exercises A Unit08 Exercises B
- Practice
- Learn Python, Part 3: Words and Letters
- Learn Python, Part 4: Changing Text
- Python Tutor Select python, then select different python examples, start with hello and happy examples
- Lab08 Debugging and Agile Methodology
Unit 9: Data Structures
Nov 8 – Nov 12
- 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
- Lecture Slides
- Python Videos 3
- Exercise09 Unit09 Exercises A Unit09 Exercises B
- Practice
- Learn Python, Part 7: Lists
- Learn Python, Part 8: Loops
- Lab09 Visualizing binary trees
Unit 10: Database Systems. Project 2 assigned
Nov 15 – Nov 19
- 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
- Exercise10 Unit10 Exercises A Unit10 Exercises B
- Practice
- DBSnap Tutorial
- Codecademy (Learn SQL)
- Learn SQL in 20 Minutes (Tutorialzine)
- Lab10 Exploring your SQLite data
Guest Speaker 2: Artificial Intelligence. Project 2 Outline Due
Nov 30 – Dec 2
- Speaker
- Introduction to AI
Exam 3: Units 8 through10 and information from guest speaker
Dec 3 – Dec 5
- Exam 3
- On Canvas, must be completed by 5pm on Monday
Project 2: Presentations
Dec 7, Dec 9, Dec 14, Dec 16
Please read the following for the final project: