The SigArch Primer

If you want to get involved in SigArch, but don't feel like you've taken enough classes to know what's going on, then this page is for you. Below is a list of resources for helping you learn about computer architecture and embedded programming. Most of the links below are to course web sites at this and other universities that we think will be helpful.

Essential Topics

  • Digital Logic: The most basic thing to understand about computer architecture.
    1. How Boolean Logic Works at HowStuffWorks. Introduction to Boolean logic.
  • Computer Architecture: Using sequential logic to build processors.
    1. 6.004: Computation Structures at MIT. An introduction to computer architecture, roughly equivalent to ECE 290. Look at "Previous Terms" link for complete semester resources.
    2. ECE 312: Computer Organization and Design at UIUC. Covers virtual memory, cache design, pipelining, out-of-order execution, speculative execution, multiprocessing, etc.
    3. 6.823: Computer System Architecture at MIT. "6.823 is a study of the evolution of computer architecture and the factors influencing the design of hardware and software elements of computer systems. Topics may include: instruction set design; processor micro-architecture and pipelining; cache and virtual memory organizations; protection and sharing; I/O and interrupts; in-order and out-of-order superscalar architectures; VLIW machines; vector supercomputers; multithreaded architectures; symmetric multiprocessors; and parallel computers."
  • Programming: SigArch projects generally involve programming in both high-level languages and assembly for various processor architectures.
    1. ECE 291: Computer Engineering II at UIUC. This course teaches Intel x86 assembly language. The course website has an assembler available for download as well as tutorials for using it. The course has an online textbook.
    2. CS 125: Introduction to Computer Science at UIUC. This course teaches basic high-level programming in Java. It also covers simple data structures, recursion, sorting, and object-oriented design.
  • Programmable Logic: SigArch sometimes uses programmable logic for projects, such as the SigArch sign. A basic knowledge of VHDL is useful for working on these projects.
    1. ECE 311: Microcomputer Laboratory at UIUC. Teaches use of VHDL for logic synthesis on FPGAs. Online course notes introduce VHDL, FPGAs. This material will be useful for a beginner, but the best way to learn is to actually use one of the FPGA boards SigArch has in the lab.

Other Useful Topics

  • Signal Processing: Past projects, such as Digital Dancer, have made use of signal processing. More importantly, an understanding of signals in both time and frequency domains is often assumed in electrical engineering literature.
    1. ELEC 241: Fundamentals of Electrical Engineering I at Rice University. "The course focuses on the creation, manipulation, transmission, and reception of information by electronic means. Elementary signal theory; time- and frequency-domain analysis; Sampling Theorem. Digital information theory; digital transmission of analog signals; error-correcting codes."
    2. Elec 301: Signals and Systems at Rice University. "This course deals with signals, systems, and transforms, from their theoretical mathematical foundations to practical implementation in circuits and computer algorithms. At the conclusion of ELEC 301, you should have a deep understanding of the mathematics and practical issues of signals in continuous and discrete time, linear time invariant systems, convolution, and Fourier transforms." A little more theoretical than the previous course.
    3. ECE 320: Digital Signal Processing Laboratory at UIUC. Not much content here, but has some resources on practical applications under "Project Exercises" on the "Handouts" page.
  • Electronic Circuits: Though you can often get by with just knowledge of digital circuits, interfacing with analog systems will often require more in-depth knowledge of electronic circuits. Topics like how to use transistors, relays, analog filters, etc will be useful to learn.
    1. 6.071 Introduction to Electronics at MIT. Sort of like ECE 210 at UIUC, but with more emphasis on practical circuits.

Comments?

If you have any suggestions for this page, go ahead and send them to us: sigarch@acm.uiuc.edu.

8/27/03 by Joel Jordan