CS 320 FALL 1997 FINAL PROJECTS GUIDELINE Monday, October 20, 1997 In lieu of a comprehensive final exam, CS 320 students have the option of completing a final project. As far as scope goes, this is NOT a semester project; it should be smaller. however, it should be more work than a homework. Perhaps the effort of two programming homeworks is a good guideline. I realize that it is easy to bite off more than you can chew, so I'll be flexible: the final projects will be due at (or before) the final exam for our class, (whenever that is scheduled!). If you don't turn in your project by then, you'd better take the exam! (or receive a zero for the "final" portion of the course grade). I will make up a comprehensive final exam (anticipating SOME audience!). POSSIBLE TOPICS: If you have the initiative, propose your own idea to me. Or choose one of these: (I'll mention others later if I think of them.) Remember that the point of this is to learn about and EXPLAIN (i.e., writing!) some aspect of computer ARCHITECTURE/ORGANIZATION. (A) PROGRAMMING: ASSEMBLY: Implement something interesting in some assembly language (doesn't HAVE to be MIPs), such as an "advanced" data structure (e.g., a heap, binary tree, linked list, graph, etc.) or algorithm (e.g., mergesort, shortest path, hamiltonian circuit, matrix multiplication, ANYTHING almost). Get it running, then write up some sort of analysis, one or two pages (or more, if you need space; no max.), e.g., timing analysis, discussion of strengths of that particular assembly language, etc. HIGH LEVEL LANGUAGE: You could write in some high level language like C, C++, Pascal, JAVA, or Visual BASIC, but must be architecture related. For example, write something in C, then run it through a compiler that produces assembly code. Analyze that assembly code somehow (e.g., show how your three dimensional array in C was implemented in assembly; could you optimize the assembly code further? etc.). Again, need a write-up, perhaps 2-4 pages here. (B) CIRCUIT DESIGN: Design a useful circuit, such as a traffic light or elevator controller, or a counter, or an encoder. Define inputs and outputs, fill out truth table, optimize (minimize) circuit a bit, then implement in DIGSIM, or other simulator, or real hardware if you can get it! Again, a short write-up (1-3 pages, whatever) is called for. truth (C) RESEARCH, WRITING: Don't have to implement anything. Find some articles, books, papers, on a particular topic realted to architecture. Sample subjects: these new multimedia MMX processors--how are they different from normal CPUs? Or how about history: how did the Digital, Inc. PDP-11 processors differe from the VAXs? Find an example of a complex instruction set computer (CISC) and compare with a RISC (like our MIPS). What are tradeoffs involved in choosing complex or reduced instruction set? Are there any examples "in between", or do architectures always fall to one or the other extreme (CISC versus RISC)? Or find an example of a variable length intruction set (e.g., VAX) and explain some advantages/disadvantages of this. For the research option, I would expect a longer, more in-depth write-up, perhaps 6-10 pages.