Description
Last modified: July 02 2013 01:09:39 PM
For this assignment, you will pick one of three possible projects, a paper, a presentation, or a tutorial and complete the project for a particular lab assignment or topic. There will be no more than one person doing a particular project in each recitation section. Therefore, assignments will be picked by students using the form given out in class, a duplicate copy can be printed from here. Assignments are given on a first-come, first-served basis. So, the sooner you turn in your form, the better the chances of receiving your first choice. If you do not turn in a form by the end of class 1/23/08, you will be assigned a communication task from those that were not chosen.
Papers
All papers must be typed and have a separate cover page that contains:
- Title of the paper
- Student's full name
- Lab section
Papers should be sufficiently lengthy to give adequate coverage to the topic. Minimally, papers are expected to be 5 double-spaced pages in length. This assumes reasonable margins (1" all around) and font size (no bigger than 12 point). Students working on papers earlier in the semester will probably have shorter papers than those working on papers later in the semester. The 5 page minimum is a minimum and work will be judged on quality more heavily than quantity. Be fore-warned that papers that are explaining the technical aspects of a lab are expected to be detailed and will most likely exceed the 5-page minimum if done properly.
Papers are to be submitted in hard copy at the beginning of the lab section on the day they are due.
First Paper
The first paper of the semester has a topic that is not related to a lab assignment. Its topic is "What is computer science/engineering?" For this paper, you should pick either computer science or computer engineering depending on your intended major and give a definition of what the field is and what types of sub-disciplines are contained within that field.
Technical Reports
For each of the lab assignments 1 - 8, a technical report will be created. This report should emphasize the key concepts introduced in the lab, the design of the overall program that is the solution to the assignment, as well as any particularly interesting aspects of the code. You should not include a copy and paste of the entire code in this paper, but rather pieces of the code that you found interesting/challenging/unique and would like to talk about in the report. Consider this part of the report like an article for a conference or journal. You are explaining to your peers what you have accomplished and why they should be interested in the work you have done.
Included in this report should also be a brief instructor's manual for how to interact with the program created. At the end of the report, create a "future work" section describing your ideas for how to extend the project and add new functionality. You do not need to say how the functionality would be implemented, but rather what types of functionality might improve the program.
It is expected that this report talks about a functioning and complete lab assignment. If you assignment is not complete, or functioning, your first job is to seek out the assistance from the staff to ensure a properly working assignment.
Presentations
Presentations will be given at the beginning of the lab session. Presentations should be anywhere from 10-20 minutes in length including time for questions. Presenters have access to the projector in the lab as well as their own code. Presenters also have the ability to bring their laptop in to project on the screen. It would be in your best interest to bring in any laptop to test with the systems at least one week before your scheduled presentations. If using a webpage or other programs, you should feel comftable accessing them on the systems in Baldy 21 before the day of the presentation. The terminals in Baldy 21 are simply terminals. There is no way to bring in media (CDs, DVD, flash drives) and access it. Therefore, all materials must be in your account on hadar/yeager/styx/nickelback before you arrive in the lab on the day of your presentation. Please note also that the machines are not Windows machines. If you want to use a presentation program like Powerpoint, you should spend some time playing with the equivalent program installed on the system so that you are comfortable with it.
After the presentation is given, all media (slides, websites, code snippets, etc) should be put into a zip file and submitted using the electronic submission command used for lab submissions. (See instructions in lab descriptions.)
First Presentation
The first presentation will be on the topic "Compilers, interpreters, the JVM - how Java programs work". In this presentation, you must describe the process of writing code, starting from the typing in the editor to the eventual working Java program. This should include the process of compiling and running. Each of these processes should be defined and explained. Special attention should be paid to how Java accomplishes these tasks (i.e. the name of the compiler, how to run it, what is the JVM and what is it used for).
Solution Presentations
The solution presentations present the finished solution for a lab assignment. These presentations should include the showing of the final program running as well as an explanation of the design of the final submission and a discussion of the code that was written by the student to finish the assignment. For early assignments, students are expected to go through almost line for line each line of code in the assignment (because there will not be that many total lines). As the assignments get larger (labs 5, 6, 7, 8), focus should shift from every line to lines that were confusing, hard to figure out, or the key in making the entire assignment work.
It is expected that these presentations talk about a functioning and complete lab assignment. If you assignment is not complete, or functioning, your first job is to seek out the assistance from the staff to ensure a properly working assignment.
Tutorials
For this assignment, you are to create a tutorial that can be posted online as part of the course website about a particular topic. For this tutorial, you can use any web technologies that you know (HTML, CSS, JavaScript, etc) to create a page (or set of pages) that will enable you and your fellow classmates to review a concept or receive a refresher on a topic. No instruction is provided for this assignment about creating a webpage.
Look here for information about creating a webpage that can run from your CSE account (a great way to test out what you've done).
When you have completed your pages, you should put all pages in a directory called TutorialXubitname, where X is the tutorial number for the tutorial from the list below and ubitname is your UBit name. For grading, the contents of your directory will be put into an equivalently named directory inside the course website. Submissions considered good enough for other students to use will be made available to all students to use as a resource.
After the files are finished, the entire directory should be zipped and submitted using the electronic submission command used for lab submissions. (See instructions in lab descriptions.)
Tutorial 1: Creating Objects
This tutorial should give the mechanics of creating objects in Java as well as some basic definitions: class, object, instantiation, keyword, expression, statement. Showing what is going on inside the machine when an object is created is also required.
Tutorial 2: Calling methods and Parameters/Arguments
This tutorial should discuss calling methods on objects that have already been created and the different between formal parameters and arguments. The syntax of a method call should be explained as well.
Tutorial 3: Variables
This tutorial should define variables in a programming sense and explain what they are used for in a program. The various types of Java variables should then be discussed, local variables, instance variables, parameters. In Java, if you are creatuing are references. This statement should be explained in detail. Showing what is going on inside the machine when an reference is declared and then assigned is also required. Therefore, assignment to a variable should also be discussed.
Tutorial 4: Composition
This tutorial should tell what the composition relationship is, how it is implemented in code, how it looks in UML, and under what circumstances it is appropriate to be used in a progam.
Tutorial 5: Association
This tutorial should tell what the association relationship is, how it is implemented in code, how it looks in UML, and under what circumstances it is appropriate to be used in a progam. As a follow on to Tutorial 4, this tutorial should make the case for the difference between the two relationships.
Tutorial 6: Conditional Statements
This tutorial should explain the concept of selection and one implementation of selection, conditional expressions (if-statements). The syntax of if-statments, if-else statements, if-else-if statements, etc. should be explained as well as the path of execution that is taken through these statements. Since if-statements in Java need boolean expressions, the concept of boolean expressions, logical operators (and, or, not) and operators that return boolean values will need to be discussed.
Tutorial 7: Loops
This tutorial should explain the concept of iteration and one implementation of iteration, loops. There are four types of loops available in the Java language, the while loop, the do-while loop, the for loop and the for-each loop. Each loop should be discussed syntactically and the mechanics of execution should be discussed for each.
Tutorial 8: Using Collections
This tutorial should introduce the concept of collections, the java.util.Collection interface, and the basic use of collections within a program. The operations of add, delete, and find should be discussed. Since collections in Java use Generics, the use of Generics with collections should be discussed.
[an error occurred while processing this directive]