CS255 Systems Programming Lab

Department of Computer Science

University of Crete

Instructor: Angelos Bilas

Semester: Spring 2024

 

 

Course Info                 Syllabus                      Assignments               Policies

 

 

Policies

 

 

Coursework

 

Course work consists of:

·       Two lectures per week: Attendance at lectures is strongly recommended and expected but will not be recorded. Students are, however, fully responsible for all material presented in lectures. Some of that material will not be in the textbooks. 

·       Six bi-weekly assignments (A): All assignments are to be written based on the assignment specification and should function properly. The assignments are designed to give you as much flexibility as possible: key details will be set out in the assignment specification, and the remaining decisions will be left up to you. 

·       One midterm exam (M) and one final exam (F): All exams are closed book, closed notes, no other aids. 

 

Mark distribution

 

The course mark (C) is calculated as:

if (F ≥ 5.0) then

        C = round(0.3*A + 0.2*M + 0.5*F)

else

        C = round(F) [Fail]

end


The same course mark calculation is used for all exam periods. Course assignments are turned in only once, before the first exam period. 


Getting Help

 

Ask questions in class. It always makes lectures (and life) more interesting. 

 

Use each teaching assistant's weekly office hours to ask questions about your assignments. Office hours are especially appropriate if you need to use a terminal to show/explain what goes wrong in your assignment. Teaching assistants are here to help you, take advantage of it. 

 

Ask questions to the course's forum at CS255 Moodle, especially if your questions are helpful to other students (and usually they are). To login, use your LDAP credentials (i.e., csdXXXX@csd.uoc.gr where XXXX is your student ID). You are encouraged to respond to questions of your colleagues already posted, without however, violating any rules of academic contact. If your question is specific to your work, or if you must reveal portions of your code to express your question adequately, then you should e-mail it to one of the teaching assistants or all of them at h y 2 5 5 @ c s d . u o c . g r. 

 

Make sure that you subscribe to the course mailing list h y 2 5 5 - l i s t @ c s d . u o c . g r. You can subscribe to the mailing list by sending e-mail to m a j o r d o m o @ c s d . u o c . g r with the text "subscribe hy255-list" as the mail body. The course mailing list h y 2 5 5 - l i s t @ c s d . u o c . g r will be used for course-specific announcements. 

 

Collaboration

 

Programming, like composition, is an individual creative process. Individuals must reach their own understanding of the problem and discover a path to its solution. During this time, discussions with friends are encouraged. However, when the time comes to write the code that solves the problem, such discussions are no longer appropriate -- the program must be your own work (although you may ask teaching assistants for help in debugging). If you have a question about how to use some feature of UNIX, etc., then you can certainly ask either your friends or the teaching assistants. 

 

Do not, under any circumstances, copy another person's program. Writing code for use by another or using another's code in any form is academic fraud and will be dealt with harshly. You are also responsible for ensuring that the code you write for the assignments is not readable by others. You must ensure that your git repositories for the your assignments are private and you must use the chmod command to change the protection of your local files (type man chmod for more information or consult the first tutorial). 

 

Due Dates and Late Work 

 

Assignments are due at 23:59:59 on the date specified. Each assignment has to be turned in by the specified deadline. Nevertheless you can submit an assignment for the next three days past the deadline, having as a penalty 10% of the assignment mark for each day of delay in turning in an assignment. Exceptions to these rules will be made only under exceptional circumstances, and then only with an appropriate written excuse. Problems with transportation, network connectivity, or other unexpected situations do not justify any type of extensions. The only cases that will be considered are days that the University is officially closed. 


Assignment Examination and Marking - Code Review

 

Assignments are marked both for functional correctness and design issues. Program readability and student's understanding of the subject are important aspects of the design procedure: 

·       Correctness means that the assignment adheres to the specification, and in any case, it either performs according to the specification, or returns an error. "core dumps", even with invalid inputs, are not acceptable (the use of assert statements, though, is an acceptable means of checking for valid states in your program). 

·       The student's understanding of the subject matter is tested through questions about the turned in code and the subject matter of the assignment. Various guides to programming style are fine. A couple of documents on style are listed in the course material. Also, you can use the indent (or clang-format) utility to format C code.

 

Each student will be examined and marked individually in each assignment, as follows: 

·       Each student will be examined on their understanding of the code and subject matter during code review sessions. A code review is a short (about 10min) one-on-one question-and-answer evaluation on the turned in code with a teaching assistant in the lab. There will be a one-to-one code review session for every one or two assignments submitted, for each student. The dates for each code review session will be published in advance. Each student will reserve a slot for a code review with the rendezvous utility. 

·       After each code review session, a mark will be issued for each assignment included in the session. The final assignment marks are valid for the second and third replacement final exams as well.

 

Facilities

 

All assignments are to be done on CSD GNU/Linux workstations with the 32bit version of Linux and the gcc toolchain (e.g. rodi, avocado, ahladi, aherousia, ananas, milo, agwnia, karpouzi, kastano, kukunari).  For all the assignments we will use the gcc compiler and toolchain (type man gcc for more help, typing gcc -v and make -v will give you version information), unless otherwise stated in the assignment specification. Documentation and reference cards on the necessary tools can be found on the web and under the course tutorials.

 

Acknowledgements

 

·       The material used in the class and the flow of lectures was inspired by course offerings in the Computer Science Department at Princeton University and the ECE Department at the University of Toronto. 

·       Assignments 2 (A String Module), 3 (ADTs: Πίνακας Συμβόλων), and 6 (Systems Security: Buffer Overrun Attack) originate from material used in CS217 at Princeton University during the Spring Semester of 2005. 

 

Last Modified: 11-Feb-2022 09:57