CSCI N301 notes

Main class links

Course notes

Interesting links

Labs from Eck The most Complex Machine

Introductory Lab: The Web, Java, and DataReps. This lab is mainly an introduction to the use of the World Wide Web and to the idea of Java applets. A simple applet, DataReps, serves as an example of an applet. It also serves to demonstrate how several different types of data are represented in a computer.

xLogicCircuits Lab 1: Logic Circuits. Explores logic circuits created out of AND, OR and NOT gates. The relationship between circuits and Boolean algebra is also covered.

xLogicCircuits Lab 2: Memory Circuits. Shows how circuits that contain feedback loops can be used as memory circuits, and how a RAM (random access memory) can be constructed and used.

xComputer Lab 1: Introduction to xComputer. Introduces the xComputer, a simple model computer, and investigates how it operates in a fetch-and-execute cycle to carry out machine language instructions stored in its memory.

xComputer Lab 2: Assembly Language Programming. Covers assembly language programming for the xComputer, including labels and indirect addressing.

xComputer Lab 3: Subroutines. Introduces the idea of a subroutine and shows how subroutines can be implemented "by hand" in the assembly language of xComputer, even though that language does not offer direct support for subroutines.

xTuringMachine Lab: Introduction to Turing Machines. This lab is meant to illustrate the basic operation of Turing machines and to show that even the extremely simple operations performed by Turing machines are sufficient for performing complex computations.

Publishing on the Web. This lab will cover some of the basics of Web publishing, concentrating on the "Composer" utility in Netscape Communicator. This lab is not closely related to The Most Complex Machine, and it does not use any applets. However, it does sort of fit in with the theme of "real computers" and their impact on society, which is covered in Chapter 5 of the text. (This lab is somewhat specific to Hobart and William Smith Colleges.)

xTurtle Lab 1: Introduction to Programming. Covers the basics of the xTurtle programming language, including loops, if statements, variables, and built-in turtle graphics commands.

xTurtle Lab 2: Thinking about Programs. Investigates how preconditions and postconditions can be used to help develop working programs that perform complex tasks. Also introduces the idea of subroutines.

xTurtle Lab 3: Subroutines and Recursion. Continues with subroutines in general and recursive subroutines in particular. Recursion is used to produce nifty pictures.

xSortLab Lab: Sorting and the Analysis of Algorithms. Uses the xSortLab applet to investigate several different algorithms for sorting lists of numbers.

xTurtle Lab 4: Multiprocessing. Shows how multiprocessing can be used to divide a large problem into several subtasks that can be executed in parallel. Some examples of communication between parallel processes are also given.

xModels Lab 1: Two-D Graphics and Animation. Introduces a scene-description language for creating still images and multi-frame animations. Shows how hierarchical, geometric models are used in computer graphics. In this lab, only two-dimensional images are covered.

xModels Lab 2: Adding the Third Dimension. Extends the ideas covered in the previous lab to three dimensions. Also covers "lathing" and "extrusion," two operations for producing three-dimensional objects.

Assignments (tentative)

Project Description Date Due
conversion pt I binary / octal / hex conversion
conversion pt II 2's complement, floating point
DeMorgan's Law Use digital logic to prove
an important law in boolean
algebra
Adder Build a simple 2-bit adder adder.html
Architecture Diagram the Von Neumann Architecture
Assembly Language One Write a swapper in assembler The swapper
Assembly Language Two Write a string copy function
Algorithms One Write the Algorithm for a Guessing Game
Algorithms Two TBA
Complexity Algorithm Analysis Lab
Software Engineering UML Diagram
Documentation for xMachine
© Andy Harris
Indiana University / Purdue University, Indianapolis
email: aharris@.cs.iupui.edu
homepage: www.cs.iupui.edu/~aharris