GOALS FOR THE FIRST MINIPROJECT IN PROGRAMMING PARADIGMS - PP
Deadline for this submission: Friday, October 28 2016, 16:30.
Workload of this miniproject: 23 hours.
Period of work: In 2016, a fixed period of time will be scheduled for work on the miniproject (October 26-28). Please consult your Moodle calendar for the definitive details. We strongly recommend that you stick to the recommended workload of this miniproject. We discourage you from using project time for PP purposes!
The PP students are supposed to solve an extended programming exercises, and to write a small report that documents the outcome. The report is expected to fill 5 pages of text (excluding a possible front page). Please limit youself to this maximum page count.
When we evaluate the first miniproject in Programming Paradigms the following more specific goals/rules are taken into consideration:
STATUS You must describe the status of your work on the first page of your report. This includes the degree of completeness (relative to the assignment), whether the program is runnable, and whether your program works as prescribed. Please also state precisely which Scheme system (and which version of it) you have used during your work.
OVERVIEW OF YOUR WORK You are supposed to give an overview of your program that helps the reader of your program to understand your work. Approximately one page of text.
REFLECTIONS - You are expected to reflect on your use of functional programming relative to your previous experience with imperative and object-oriented programming.
- You are expected to evaluate strengths and weaknesses of the functional paradigm in relation to the requested solution/program in the miniproject.
- In addition, you are expected to reflect on your use of dynamic typing in contrast to your experience with programming languages with static typing.
- Please reflect carefully! This is an important part of your report
SOURCES OF INSPIRATION On the last page you are requested to enumerate your sources of inspiration (if any). Course text books and course teaching material should not be stated.
PROGRAM GOALS AND REQUIREMENTS - The program must be written in Scheme.
- The program must adhere to the principles of the functional programming paradigm. File IO is allowed, however.
- The program must make adequate use of higher-order functions.
- If you structure your data as lists, you are requested to write accessor functions. Widespread use of car/cdr combinations is discouraged.
- The functional program must be well-written, well-structured and well-explained.
- Functions are supposed to be decomposed appropritely, such that 'large functions' that solve 'large problems' are decomposed.
- Program explanations must be contained in program comments.
- It is not allowed to include program parts from other sources (books, papers, from the internet, or from fellow students). You are allowed to use an existing list sorting function, however (most Scheme systems offer such a function, such as (sort-list list leq-fn)
- Any external program inspiration must be clearly stated in your miniproject report.
- You must write your name and your AAU email address in a comment, in the top of your Scheme source file.
INDIVIDUALITY AND COOPERATION You must write your program as well as your your miniproject report alone.
SUBMISSION The report must be a PDF file. Your full name, student-number (from your student card), and your AAU email address must appear on the front page (or in the title).
The program can be organized in one or more Scheme files. You must place a sample HTML calendar in your Program directory.
Use the following directory organization for you report and your program:
username
Report
Program
username must be your AAU username, as it occurs in your AAU email address (before the '@' character).
Zip the outer directory and submit it via the Moodle PP course homepage. You must produce a zip file - any other kind of packaging will be rejected.
Throughout your work, quality (as described above) is more important than quantity. This holds for both the miniproject report text and the source program.