Computer Programming Project 2022
Goal of this course
The aim of this course is give you experience with programming a larger project. This larger project involves some of the concepts you became familiar with during the first year of the Bachelor Computer Science, allowing you to put in to practice what you have learned.
The course in a nutshell
In this course you will implement an interpreter which exectures IJVM bytecode, in the programming language C. The assignment is split into several smaller parts that build up to the final deliverable.
Before starting on the project
First follow the Installation instructions.
And read the following
The project
The project is split into five main chapters. Each chapter builds on the previous chapters and introduces new tasks. We have ranked the difficulty of the chapters to help you better manage your time. Of course, these are just indications, your experience might be different.
Chapter | Difficulty |
---|---|
Binaries, dreaded Binaries! | ★★★☆☆ |
Stack up! | ★★★★☆ |
Controlling the Flow: the GOTO solution! | ★★☆☆☆ |
Local variables: Artisan and Organic! | ★★★★☆ |
Call yourself a method! | ★★★★★ |
After completing the above, you can optionally continue with Even more stuff
Grading:
- Your program must pass all the basic tests. There are a total of 5 basic tests and each basic test is worth 0.8 points. (4 points)
- Your program must pass at least 4 of the advanced tests. There are a total of 7 advanced tests and each advanced test is worth 3/7 points. (3 points)
- If you pass al the basic tests and at least 4 of the advanced tests, your program will be graded on style and general impression. (0.5 point)
- You can achieve a higher grade by implementing additional functionality (3.5 points). Note: you are only eligible for these points if you pass at least 6 out of 8 the advanced tests.
Naturally, your final grade is capped at a 10.
You need at least 5.5 points to pass the course. Note: It is NOT possible to pass by style points.
Oral evaluation
If you pass all the basic tests and at least 4 of the advanced tests, you can schedule an oral evaluation. The purpose of the oral evaluation is to confirm that you have submitted your own work. We do this by discussing the inner details and history of your code. You must pass the oral evaluation to pass the course. The oral evaluation will take place on July 3rd, unless arranged otherwise with your TA. Note: the oral evaluation does not affect your final grade.
Deadline
Please submit your solution before Friday June 30th 23:59 CEST and make sure that it passes the automated tests on CodeGrade. This deadline is strict. You can submit your code as many times as you want, so please do not wait until the last minute for your first submission.
Submission requirements
The program should compile, using make
The program should execute the binary binary.ijvm when executing the command
make ijvm
followed by./ijvm binary.ijvm
The tests in the folder tests should execute successfully when running
make testbasic
Your program has to compile and work on Ubuntu 20.04 LTS x86-64 with Clang. Check the output of our submission system to make sure that your program compiles on the target environment.
Plagiarism and a note on doing the assignment yourself
Do not copy code from each other or from the internet!
This is an individual programming assignment, which means that you have to program the assignment by yourself. It is not sufficient to understand the program you hand in, you must have programmed it yourself.
It is allowed to discuss the assignments and solutions broadly.
You are allowed help from a TA or a fellow student that already solved it if you are stuck. It is then:
- OK to show your (not-working) code to them and discuss what is wrong.
- NOT OK to look at their (working) code. The reason here is that the former leads to you understanding what is wrong with your own code, while the latter likely leads to you submitting the same solution as your fellow student.
As soon as you are unstuck, please continue working individually. It is not allowed to program together with a friend/parent/tutor, as it is then impossible to see what can be attributed to you.
We automatically check your code for similarities with the submissions of other students and known solutions.
Do not post your solutions online! This is not allowed as sharing solutions is also considered fraud by the exam committee (fraud is defined as any action that makes fair assessment impossible).
Please refer to the Teaching and Examination Regulations and The Examination Board’s Rules and Guidelines for additional information.