CMSI 2210: Class Notes by Week
The following outline presents the topics that are covered, in the approximate order and time frame
in which they will be discussed. Weeks that have passed will be grayed out .
The upcoming or current week will be green . Click on each title to expand it
and see the topics for that week. Click on the Expand All or Collapse All buttons to do
the appropriate action for all weeks.
Week 01 — Introduction, Syllabus, Getting Started
Announcements
Homework 01 due Wednesday/Thursday
Homework 02 due Wed/Thur of week 3
Introduction and Syllabus
Tools you will use during the semester
Initial roll call and other sundries
Assignment Submissions - GitHub
Development environments
Compiler/assembler installation
Explanation of the C programming language example
Explanation of the nasm programming language example
Wednesday/Thursday : In-class Exercise: Compiler/assembler installation and checkout
[Note that this is actually homework 01…]
Week 02 — Basics of a Computer System
Announcements
No class on Monday this week — Labor Day Holiday
Computer Systems Organization
Von Neumann Architecture
Processor Parts and Organization
Layers of Organization
Assembly Language
Topics in Computer Systems
Computer Systems in Popular Culture
Beginning Analysis of Number Systems
Wednesday/Thursday : In-class Exercise: Number Base Conversion Practice
Week 03 — Ways of Representing Information: Number Encoding
Announcements
Homework 03 due next week
Homework 02 due Wednesday/Thursday
Information Representation
Symbols and Alphabets
Encoding Schemes
Bit String Encoding
Functions
Function Machines
Programming as Machine Creation
Historical Number Encoding Schemes
Encoding Integers
Encoding Real Numbers
Encoding Floating Point Numbers
Saturated and Modular Arithmetic
Wednesday/Thursday : In-class Exercise: Bit Pattern Encoding Practice
Week 04 — Character Encoding
Announcements
Homework 03 due Wednesday/Thursday
Quiz next week
Character Encoding
Character Sets
BCD, EBCDIC, and ASCII
Unicode
Other Character Sets
Ways to Encode Characters
About Strings
More about C
Wednesday/Thursday : In-class Exercise: Go Fish Practice with C
Week 05 — Computer Logic Part One
Announcements
Homework 03 second submit due Wednesday/Thursday
S.P.M.E.C. — Seeing Patterns Makes Easier Calculations
Logic Components
Gates and Truth Tables
Questions/Review about the quiz
Quiz01 on Wednesday [section 02] and Thursday [section 01]
Week 06 — Computer Logic Part Deux
Announcements
Homework 04 due next week
Quiz Coverage
Combining Parts to Make a Machine
Basic Combinations ~ FlipFlops and Adders
Stanley/Penguin — A Simple CPU
Illustrating What Happens Inside
Fetching and Decoding
Executing the Instruction
Writing Programs
Machine Language
CISC and RISC
Wednesday/Thursday : In-class Exercise: Stanley Penguin Programming Exercise
Week 07 — What Do You C ??
Announcements
Homework 04 due Wednesday/Thursday
REAL Language Representations
Top-down or Bottom-up?
Functions and Pointers and Strings ~ OH MY!
Compiling and Linking
Header files and prototypes
Multiple File Modules in a Program
C Input/Output Specifications
Wednesday/Thursday : Quiz One Do-over
Week 08 — From C To Shining C
Announcements
Numbers ~ Signed and Unsigned Integers
Getting Arguments from the Command Line
Getting Values from the User
Reading From Files
C Libraries – Stuff That's Already Built
C Isn't Object Oriented… Or Is It?? What the Struct…
Wednesday/Thursday : In-class Exercise: 'Duplicitous' ~ File I/O in C
Week 09 — Some Assembly Required…
Announcements
Homework 05 due next week
The X86-64 CPU Architecture
Instruction Encoding/Decoding
Assembler the Beautiful
Some Typical Instructions
Addressing
Data Types and How They Are Handled
Wednesday/Thursday : In-class Exercise: Port Stanley Penguin to 'nasm'
Week 10 — Flags, Instructions, NASM
Announcements
Homework 05 due Wednesday/Thursday
Quiz next week
Flags
Some Instruction Details
The X86-64 Developers Manual
NASM Tutorial
Wednesday/Thursday : In-class Exercise: A 'nasm' program to read the flags
Week 11 — Gimme a Break!
Announcements
Monday/Tuesday : Quiz review — your questions answered…
Quiz02 on Wednesday [sections 02 & 03] and Thursday [section 01]
Week 12 — The Debugger & Mixed Methods Programming
Announcements
Jump instructions
Registers
Calling Conventions
Using 'nasm' on Mac
Using 'nasm' on PC
Using the Gnu Debugger, gdb
Using the lldb
debugger
Mixing "C" and Assembly
…On One Condition…
Wednesday/Thursday : In-class Exercise: High Times at LMU
Week 13 — Finish Mixed Methods Programming & Holiday
Announcements
Homework 06 due next week
Command Line Arguments
Floating Point
Sections
Short week due to the observed holiday…
Week 14 — A Look at Systems In The Large
Announcements
Homework 06 due Wednesday
Introduction to Messaging
Messaging Systems
Socket Interface
Remote Procedure Call
Principles of Operation for RPC
In-class Exercise
Wednesday/Thursday : In-class Exercise:
Week 15 — Wrapping It Up…
Announcements
Monday/Tuesday: Semester wrap-up – any final topics that need finishing
Wednesday/Thursday: Final Exam Review – a brief recap of topics
Week 16 — Final Exam
FINAL EXAM — The Details
Section 01, the Tuesday/Thursday Section :
Exam is on Thursday, December 14th at 11:00 [11 AM]
Section 02, the Monday/Wednesday Section :
Exam is on Monday, December 11th at 14:00 [2:00 PM]
Section 03, the Monday/Wednesday Section :
Exam is on Tuesday, December 12th at 14:00 [2:00 PM]
The exam will be in the same format as all my exams, quizzes and tests. The first page will
be matching terms, and the rest of the test will be a combination of short answer, short code
writing or interpretation, and multiple choice questions. Point values for each question are
given at the end of each question's text. The total point value is give in the text at the
top of the first page.