CS255 Systems Programming Lab

Department of Computer Science

University of Crete

Instructor: Angelos Bilas

Semester: Spring 2023



Course Info                 Syllabus                      Assignments               Policies







Submission Deadline

Examination Dates

Assignment 1: Translate program

Tue, 21 Feb, 23:59

Thu, 02 Mar and Fri, 03 Mar

Assignment 2: A String Module

Tue, 07 Mar, 23:59

Thu, 16 Mar and Fri, 17 Mar

Assignment 3: ADTs: Abstract Data Types (Symbol Table)

Tue, 21 Mar, 23:59  You can submit Assignment 3 without extra penalty until the end of Midterm week, Sunday 26 March, 23:59

Thu, 06 Apr and Fri, 07 Apr

20/3 - 26/3 Midterm week (no new assignment)

Assignment 4: Sudoku checker, solver, and generator

Fri, 07 Apr, 23:59

Thu, 27 Apr and Fri, 28 Apr

Assignment 5: C and Assembly Code Tutorial: Computing Sums

Tue, 02 May, 23:59

Mon, 22 May and Tue, 23 May

Assignment 6:  Systems Security: Buffer Overrun Attack

Tue, 16 May, 23:59


Assignment Submission in GitLab

We will use gitlab-csd to submit assignments. You can also use gitlab-csd to organize and keep track of your code. For the purposes of the course, there is a CS255_23 group in the departmental GitLab server. Each assignment has its own repository within this group.


First, join the CS255 group in gitlab-csd, once at the beginning of the course:

•      Sing-in to gitlab-csd using LDAP credentials (i.e., csdXXXX@csd.uoc.gr where XXXX is your student ID). By default you will be external user (no permissions to create projects or groups and no access for internal or private projects - only for public).   

•      Go to the “Group Tab” 

•      Select the group CS255_23

•      Click on Request Access (and wait until the TA accepts your request - this may take a few hours or a day) 

•      You will be a Regular user after you have been accepted in the CS255_23 group. You will have Reporter access to available repositories. 

•      After you have been accepted in the CS255_23 group create your personal token: 

o   Sing-in to gitlab-csd using LDAP credentials (i.e., csdXXXX@csd.uoc.gr where XXXX is your student ID).   

o   In the top-right corner, select your avatar.

o   Select edit profile.                                                                                                                                                                                                                                                                                                                                                   

o   In the left sidebar, select Access Tokens.

o   Choose a name and optional expiry date for the token.

o   Choose all the scopes.

o   Select Create personal access token.

o   Save the personal access token somewhere safe. If you navigate away or refresh your page, and you did not save the token, you must create a new one. 


Before each assignment: Each assignment has its own repository in the CS255_23 group. Before each assignment starts, you have to fork the assignment repo and create your own private repo. Forking creates a copy that allows you to make changes to the copied (and private) repository.  To fork an assignment repository perform the following steps: 

•      Sing-in to the gitlab-csd and go to the CS255_23 group 

•      Select the assignment repo (e.g. assignment1) and press fork   

•      Use your name as the namespace 

•      Make the new repo (project) private and share with TAs (using hand):  

o   Go to Project Settings and select General 

o   Select Visibility 

o   Change Project Visibility to Private 

o   Go to ProjectSettings and select Members 

o   Add Iacovos Kolokasis as a Developer

•      Make the new repo (project) private and share with TAs (using script):  

o   In each assignment repo there is a python script private.py 

o   Run this script to make you repo private and add TAs as members with Developer role. Read the README.md file in the repo to find how to run the script  

o   For more information about how to run this script, read the README.md file in the repository.  


Work on your assignment: Clone locally your forked repository and start working locally on your assignment, e.g. for csp1039 issue, from your csd account in one of the csd servers, the command: 

git clone https://gitlab-csd.datacenter.uoc.gr/csdp1039/... 


Use these general git guidelines and practices while you work on your assignment:

•      Commit often, at least one commit for each step in an assignment (commit merges your work to your local repository) 

•      Commit only source files and modifications  (not executables or other binaries!)  

•      Pay attention to your commit messages: Describe precisely the purpose of each commit and what it includes

•      Push changes frequently, in case something goes wrong with the system you are working on (push sends work from the local repository to the server)


Submit your assignment: 

•      You should submit all the source files specified by the assignment and anything else necessary to compile and run it. You should also include a brief README file that explains any implementation decisions or reasonable assumptions that you have made, and how you have tested your program. Do not include object or executable files in your assignment submission, since they only take space. 

•      Commit all files (not executables or object files!) 

git add file1.c file2.c file3.c  

git commit -m "Commit message"  

git push  

•      The day and time of the deadline an automated script will download the shared forks of all members in the CS255_23 csd-gitlab team. Any further modifications after the deadline will be ignored. 


Assignment Examination and Marking: Please read carefully the policies section. 


Last Modified: 01-Feb-2023 10:22