Class Lectures and Reading Assignments
CS 22300
Computer Architecture & Assembly Language
Fall, 2016

This page documents what we do in class. It contains C programs that we will discuss in class, reading assignments, simple homework exercises that you can work on for practice and exam preparation (not for credit), and links to other sources of information.

The second exam is Tuesday, December 13, at 12:30.

Read Section 3.7 (pages 238-255) from the textbook.

Here are review problems for the second exam (which will be during final exam week).

Read Sections 3.4 (pages 179-191), Sections 3.5.1-3.5.3 (pages 191-197), and Section 3.6.1-3.6.4 (pages 200-209).

Here, in one document, is most of the documentation for the Intel CPU.

No class. Thanksgiving break.

See the homework assignment page for your third programming assignment.

Here is the TOY machine language file that we started on Tuesday and finished today.

Here is the TOY machine language file that we wrote today using stdin and stdout.

Here is the TOY machine language file that we worked on in class. It has two incomplete lines. Try to fill them in.

Use the following two links to read about a Toy cpu. Use the third link to download a programmable version of the Toy cpu.

Here is the textbook's code for Chapter 3.

The first exam is today.

For next week, read Sections 3.1 - 3.3 (pages 164-179) and reread Section 1.2 (pages 4-6), Section 1.4 (pages 7-11), and Section 2.1.5 (pages 49 - 50).

Here is an explanation that motivates IEEE floating-point numbers using "floating-point integers".

The first exam will be on Thursday, November 3 (not next week, as stated in the syllabus).

Here are review problems for the upcoming exam.

Read Sections 2.3.3 and 2.3.6 (pages 95-96 and 101-103) from the textbook.

Be sure to do Practice Problems 2.33, 2.38 and 2.40.

Read Section 2.4 (pages 109-125) from the textbook.

Be sure to do Practice Problems 2.45, 2.47, 2.48 and 2.54.

Read Sections 2.3.1 - 2.3.2 (pages 84-94) from the textbook which covers unsigned and two's-complement integer addition.

Be sure to do Practice Problems 2.28 and 2.29.

No class. Fall break.

Read Sections 2.2.4 - 2.2.8 (pages 70-84) from the textbook which covers C's casting between different integer representations.

Be sure to do Practice Problems 2.19, 2.20, 2.22, and 2.23.

Read Sections 2.2.1 - 2.2.3 (pages 59-69) from the textbook which covers C's unsigned and signed integer representations.

Be sure to do Practice Problems 2.17 and 2.18.

See the homework assignment page for your second programming assignment.

Read Sections 2.1.6 - 2.1.9 (pages 50-59) from the textbook which covers C's "boolean operators", "bitwise operators", and "shift operators".

Be sure to do Practice Problems 2.8, 2.10, 2.12, 2.13, 2.14, 2.16.

Read Sections 2.1.1 - 2.1.5 (pages 32-50) from the textbook.

Be sure to do Practice Problems 2.1 - 2.7.

Here is the textbook's code for Chapter 2.

Today we will finish the examples from the following zip file. We will discuss child processes and environment variables.

For next week, read Chapter 1, Sections 1.1 - 1.8 (pages 2-21) from the course textbook.

Here is some code to go along with the reading for Chapter 1.

The following zip file contains example C programs that demonstrate ideas from the first homework assignment. Be sure to read the Readme.txt contained in this zip file.

Today we will review the following ideas for the first homework assignment.

  1. processes vs. programs
  2. command-line arguments
  3. standard streams
  4. I/O redirection
  5. process pipelines
  6. parent process vs. child process
  7. using Process Explorer or Process Hacker to see Window's process tree
  8. environment variables
  9. creating environment variables
  10. a child process inherits its parent's environment
  11. getenv() function retrieves environment variable values

If you would like to use a Windows version of GCC, download the following file and unzip it to your C:\ directory. Compiler tools are built into the editors included in this file.

Be sure to look at the homework assignment page. Your first assignment is already listed there.

Important: You need to get an account on Purdue Cal's Peregrine Linux cluster. We will use it as an example Linux system. Log on to Purdue's research account management tool using your Purdue career account. When you are asked for a "research group name", use "Purdue Calumet". In the textbox for comments, put "CS 22300-01 Professor Kraft". Then click the "Submit Request" button, and we will see what happens.

You log on to a "remote" computer using a program like PuTTY. Download and unzip the following file. After unzipping the file, open the putty folder and run the putty.exe program. Then tell PuTTY that you want to log on to the computer named peregrine1.rcac.purdue.edu.

You can transfer files between a local Windows computer and a "remote" computer using a program like WinSCP. Download and unzip the following file. After unzipping the file, open the winscp575 folder and run the WinSCP.exe program and connect it to peregrine1.rcac.purdue.edu.

It is important to learn how to use the shell command-line. Read the following three tutorials.