Jump to: Components, Languages, Phase 1, Phase 3, Poster
Course projects will involve learning about a single programming language. These languages were chosen because of their significant historical, theoretical, or practical impact, and because most students were previously unfamiliar with them.
Some students will work individually, and some will work in pairs. Students working in pairs will be given more or more challenging tasks, as indicated below. All individuals or groups within a single lab section will be assigned different languages. For this reason, collaboration with anyone in your lab section is permitted, although all work must be your own. However, collaboration with students in different sections working on the same language is stricly forbidden.
Course projects will be completed in three phases:
The list of programming languages from which project topics will be chosen is as follows:
The first part of the project will start with the "99 bottles of beer" program for your language. The overall page is here, and links to each language's page are on the respective language pages, linked above.
Your task is to modify the existing program in the following ways:
XX lines of text on the screen.
" instead of
the usual phrase.
No special final stanza is required. So after this modification, your
program will print
99 lines of text on the screen. 98 lines of text on the screen. ... 1 line of text on the screen.
1 line of text on the screen. 1 line of text on the screen. 2 lines of text on the screen. 3 lines of text on the screen. 5 lines of text on the screen. ...
()
- an empty
pair of parentheses, 2 will print as (2)
,
and 24 as (2*2*2*3)
.out.txt
" and print equivalent output
to the screen and to that file. The lines in the file should be of the
form "XX lines of text in the file.
"
out.txt
concurrently, in
separate processes or threads.Which modifications you must implement depends on the language chosen and whether you are working in a pair. You must implement the modifications according to the following table:
Language | Individual | Pair |
---|---|---|
Ada | 1,2,3,4,7,8 | 1,2,3,5,7,8 |
bash | 1,2,3,4,7 | 1,2,3,4,7,8 |
brainfuck | 1 | 1,2 |
Erlang | 1,2,3,4,7,8 | 1,2,3,5,7,8 |
Fortran | 1,2,3,5,7 | 1,2,3,5,6,7 |
Haskell | 1,2,3,5,7 | 1,2,3,5,6,7 |
J | 1,2,4 | 1,2,6 |
Ocaml | 1,2,3,5,7 | 1,2,3,5,6,7 |
Prolog | 1,2,4 | 1,2,5 |
Ruby | 1,2,3,5,7 | 1,2,3,5,6,7,8 |
Smalltalk | 1,2,3,5 | 1,2,3,5,6,7 |
Newer addition: Presentations will be judged according to the standard departmental rubric. The schedule of presentations has been posted here.
New addition: Poster submissions (see below) may take the place of the written paper for students working in pairs.
Each individual or group will give a 10-minute presentation in lab during the last week. Due to time constraints, the 10 minute limit will be strictly enforced. Students are encouraged to plan for a slightly shorter presentation, possibly allowing a few minutes for questions.
Students working in pairs must also submit a two- to four-page paper on their language. (Normal margins, normal font, 12-point, single spaced. The emphasis is definitely on quality over quantity.)
The presentation and (where applicable) paper must relate to the topics listed below, as they relate to your chosen language. Not every topic needs to be covered for every language. Students should draw from a variety of sources, especially including their own experiences working on this project. Actual code examples are encouraged. The target audience is an SI 413 graduate (i.e., a classmate), not the instructor. The presentation/paper must convey significantly more information than could be gleaned from a single source such as Wikipedia.
Topics:New: Vote for the winning poster!
Every student or group is encouraged to submit a poster corresponding to their project. For students working in pairs, the poster submission may take the place of the written paper submission. (No one will be excused from the presentation requirement!)
The best poster (as judged by the instructor and a student poll) will be displayed for generations to come, and its author(s) will receive a 15% bonus on their entire project grade (all parts).
The ultimate purpose of the poster will be to advertise for the course and give a little taste of some of the things in it. As such, although the focus will still be on your specific programming language in the categories above, you should just concentrate on a few especially exciting or interesting aspects of the language. Actual code examples will be very good, along with some nice visual examples showing what the language has been used for or could be used for. Be creative!
Because the poster will be used to advertise for the course, the title should be "SI 413: Programming Languages and Implementation", and the following text should also appear somewhere:
This course examines basic concepts underlying the design of modern programming languages: types, control structures, abstraction mechanisms, inheritance, and constructs for programming. This course will include programming assignments in several languages.
Dr. Needham has some links about making posters at USNA avaiable here. All posters should be submitted electronically; only the winning poster will be printed.