Computer Programming Project 2022

Goal of this course

The main aim of this course is to give the student a more hands-on practical experience with programming. By implementing a larger project with a basis in material covered during the first year of the Computer Science bachelor, you will have the opportunity to gain more experience developing software, as well as showing off what you have learned during the first year.

The course in a nutshell

In this course you will implement an emulator capable of executing IJVM bytecode, in C. The assignment is split into several smaller parts that build up to the final deliverable.

Structure and planning

This manual is split into five main chapters. Each chapter will build on the previous chapters and introduce some new tasks. Each one of these chapters has been ranked by difficulty to help you better manage your time.

Chapter Difficulty
Binaries, dreaded Binaries! ★★★★☆
Stack up! ★★★☆☆
Controlling the Flow: the GOTO solution! ★★☆☆☆
Local variables: Artisan and Organic! ★★★★☆
Call yourself a method! ★★★★★


  • 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 8 advanced tests and each advanced test is worth 0.375 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. (1 point)
  • You can achieve a higher grade by implementing additional functionality (3 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.


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

  1. The program should compile, using make

  2. The program should execute the binary binary.ijvm when executing the command make ijvm followed by ./ijvm binary.ijvm

  3. The tests in the folder tests should execute successfully when running make testbasic

  4. Your program has to compile and work on Ubuntu 16.04 x86-64 with GCC-5.3, but you are free to use any compiler supporting C11 during development. Check the output of our submission system to make sure that your program compiles on the target environment.

  5. You have to use the C11 standard with the compiler flags as set in the Makefile. Additionally, you may want to use the following pedantic flags:

     -std=c11 -Werror -Wpedantic -Wall -Wextra -Wformat=2 -O -Wuninitialized-Winit-self -Wswitch-enum -Wdeclaration-after-statement -Wshadow-Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -Wconversion-Waggregate-return -Wstrict-prototypes -Wmissing-prototypes-Wmissing-declarations -Wredundant-decls -Wnested-externs-Wno-long-long

    and additionally for Clang: -Wglobal-constructors -Wshorten-64-to-32

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.

results matching ""

    No results matching ""