This is the archived website of SI 413 from the Fall 2012 semester. Feel free to browse around; you may also find more recent offerings at my teaching page.
This is the main part of your project, and it consists of writing a slightly-more-substantial program in your language. There is no starter code here; you have to write the program "from scratch".
You must choose one of the problems listed below for your program to solve.
Some of these problems are rather open-ended, meaning they aren't as precisely
specified as most of the assignments and labs in this class. On each language's
page, I've suggested which problems might work best for that language, but
this is only a suggestion, not a hard-and-fast demand. This means first
of all that you will need to tell me, via a
README.txt text file
included with your submission, exactly what your program does (like which
problem you are solving) and how it
works at a high level. It also means that you have some more decisions to make.
If you are at all unsure how to proceed, just ask! And keep in mind when
deciding which problem to tackle and how to make your program work that:
It is your job in this phase to convince your instructor that you have learned the most important features and quirks of your programming language. Notice that I said "your job". This is actually explicitly worked into the grading scheme (see below). So for example if your Clojure program looks exactly like a Java program, and doesn't take advantage of or show off any of the aspects of Clojure itself, you will not receive a very high grade. If you choose a simple problem for Ruby, and therefore solve it in a 30-line program that anyone could write, your grade will reflect this lack of demonstrated expertise. If your brainfuck program consists 90% of copied code from the internet (even if it's all properly attributed/documented),... you get the idea. Again, this is not meant to be stressful but rather freeing - there is little chance of you missing some "stupid little detail" and being highly penalized for it. Again, if you're unsure or anxious, ask!
I recommend you start by looking at the list of suggested problems listed on your language's page: Brainfuck, Piet, Smalltalk, Objective C, Erlang, go, Prolog, Haskell, emacs Lisp, Clojure, bash, Ruby, BASIC . Then come back here and look at the descriptions of those problems, keeping in mind the grading scheme below.
GOOD LUCK AND HAVE FUN!
Phase 2 counts as 50% of your total project grade. Remember that it is your responsibility to choose a problem and a way of solving that problem that shows off your mad skills in the language. Here's a break-down of how your grade will be computed:
README.txtfile. Note: it will be very bad for you if, say, it doesn't compile!
Remember, these are open ended so you can add or subtract aspects of the problem if that is more appropriate for your language. But if you do that, you should definitely run it by your instructor first! My suggestions of which problems might be best are listed on your language's page, so start there.
makeYou definitely don't need to include all the features of the "real"
make, but you should also add some new features. For example, if your language supports concurrency, you could have the program keep running in the background forever, automatically re-making any target whenever any of its prerequisites is changed. That would be neat-o!
README.txtfile. Importantly, when the game exits, the computations should halt immediately.
4x89x + 32xx7 ------- 7x150and you have to figure out a possible setting for all of the "x" digits that makes the math work out correctly. (Notice that each "x" can be a different digit!) Write a program to solve this problem, by taking the three numbers as input (with x's in them), and the choice of operation (+, -, or *). There may be many solutions to a single problem; you decide whether your program will just produce one of them, or all of them, or give you one and ask if you want to see more, etc. This isn't grade school so your program should be able to handle some big numbers!
Unless otherwise indicated, I will compile/run your program the same was
as I did in Phase 1 of the project, as specified on your language's page.
You should submit all the code, as well as a
file describing what problem you solved and how, using the normal
submit program that we use in labs, as
"413 proj 02". Be sure to check the list of files that actually get
submitted in case there are any missing. And as always, submit early and