Course coordinator
Consultation details will be made available on Blackboard.
Systems Programming in C. Operating Systems Principles: memory management, basics of machine organization, file systems, processes and threads, interprocess communication. Computer Networks Principles: topologies and models of computer networks, protocols, network programming, network applications.
CSSE2310 is an introduction to UNIX (Linux), the principles of computer systems (networks and operating systems) and systems programming in C.
You will learn about the basics of operating systems (processes, threads, virtual memory, file systems etc.) in the context of the Linux operating system; and the basics of networking in the context of important Internet protocols (TCP, IP etc.). You will learn how the operating system provides these services to user programs by way of system calls and you will write C programs that use these services - including programs that create and manage multiple processes/threads that communicate with each other - even across a network.ᅠ
You will also become familiar with a Linux command line environment (shell) and be able to write common commands and simple shell scripts.ᅠᅠ
Students are assumed to have successfully completed an introductory programming course such as CSSE1001 or ENGG1001. Strong programming skills (in any language) will be an advantage. It is also helpful if students have some basic knowledge of computer systems and some prior exposure to the C programming language (e.g. from CSSE2010).
You'll need to complete the following courses before enrolling in this one:
CSSE1001 or ENGG1001
We recommend completing the following courses before enrolling in this one:
CSSE2010
You can't enrol in this course if you've already completed the following:
COMP2303 or COMP7306 or CSSE7231
This course is jointly-taught with:
All learning activities are jointly taught. CSSE7231 students will have additional functionality to implement in assignments 3 and 4.
Consultation details will be made available on Blackboard.
The timetable for this course is available on the UQ Public Timetable.
Students should signup to one (2 hour) PRA session. Note these sessions start in Week 1.
The main goal of this course is to produce students who are competent C systems programmers who have a good understanding of how the underlying operating systems and networks work.
After successfully completing this course you should be able to:
LO1.
Use a UNIX (Linux) shell and write commands and simple shell scripts to perform common tasks, including modifying file permissions.
LO2.
Write, compile, run and debug C programs in a UNIX (Linux) environment.
LO3.
Use the Subversion version control system, including being able to identify appropriate commands for various operations and write appropriate SVN commit messages.
LO4.
Write C programs that access file systems and perform input/output using Standard C library calls and underlying system calls.
LO5.
Write and analyse C programs that create and control processes and threads.
LO6.
Evaluate and implement different methods of inter-process and inter-thread communication and coordination.
LO7.
Explain, contrast and be able to perform calculations on the properties/relationships/addressing schemes of layers in the IP networking stack and important protocols used on the Internet.
LO8.
Write network client and server programs using the sockets API.
LO9.
Predict the behaviour of, and perform calculations about, virtual memory systems and file systems.
LO10.
Apply principles of secure and defensive programming to C programs
Category | Assessment task | Weight | Due date |
---|---|---|---|
Computer Code |
Assignment One - Introductory C Programming
|
15% |
23/08/2024 3:00 pm |
Computer Code, Quiz |
Assignment Two - Debugging
|
10% |
6/09/2024 3:00 pm |
Computer Code |
Assignment Three - Processes and Pipes
|
15% |
4/10/2024 3:00 pm |
Computer Code |
Assignment Four - Threads and Network Programming
|
15% |
25/10/2024 3:00 pm |
Examination |
Final Exam
|
45% |
End of Semester Exam Period 2/11/2024 - 16/11/2024 |
A hurdle is an assessment requirement that must be satisfied in order to receive a specific grade for the course. Check the assessment details for more information about hurdle requirements.
23/08/2024 3:00 pm
You will write a C program for Linux that implements a given specification and that follows a given style guide. You will use a version control system to progressively build your application. The task description will be released in week 2.
Programs must be submitted electronically as detailed in the assignment specification.
You may be able to apply for an extension.
The maximum extension allowed is 7 days. Extensions are given in multiples of 24 hours.
Assignment submissions received after the due time (or any approved extended deadline) will be subject to a 100% late penalty. A one-hour grace period applies to the due time after which time (4:00:00pm) the 100% late penalty will be imposed. This grace period is designed to deal with issues that might arise during submission (e.g. delays with Blackboard or Gradescope) and should not be considered a shift of the due time.
6/09/2024 3:00 pm
The assignment will require students to understand the C programming language and apply debugging skills to understand the behaviour of a program.
Student attempts are recorded automatically by the assignment software.
You may be able to apply for an extension.
The maximum extension allowed is 7 days. Extensions are given in multiples of 24 hours.
A penalty of 10% of the maximum possible mark will be deducted per 24 hours from time submission is due for up to 7 days. After 7 days, you will receive a mark of 0.
4/10/2024 3:00 pm
The third assignment will require development of an application that interacts with a UNIX file system and uses multiple processes that communicate with each other.
Programs must be submitted electronically as detailed in the assignment specification.
You may be able to apply for an extension.
The maximum extension allowed is 7 days. Extensions are given in multiples of 24 hours.
Assignment submissions received after the due time (or any approved extended deadline) will be subject to a 100% late penalty. A one-hour grace period applies to the due time after which time (4:00:00pm) the 100% late penalty will be imposed. This grace period is designed to deal with issues that might arise during submission (e.g. delays with Blackboard or Gradescope) and should not be considered a shift of the due time.
25/10/2024 3:00 pm
This assignment will involve writing a network client/server application that uses multiple threads.
Programs must be submitted electronically as detailed in the assignment specification.
You may be able to apply for an extension.
The maximum extension allowed is 7 days. Extensions are given in multiples of 24 hours.
Assignment submissions received after the due time (or any approved extended deadline) will be subject to a 100% late penalty. A one-hour grace period applies to the due time after which time (4:00:00pm) the 100% late penalty will be imposed. This grace period is designed to deal with issues that might arise during submission (e.g. delays with Blackboard or Gradescope) and should not be considered a shift of the due time.
End of Semester Exam Period
2/11/2024 - 16/11/2024
The final exam will be an on-campus, invigilated paper-based exam. The exam is closed-book. The exam covers all course materials from the whole semester. Question formats may include short answer, calculations, and programming tasks.
Planning time | 10 minutes |
---|---|
Duration | 120 minutes |
Calculator options | (In person) Casio FX82 series only or UQ approved and labelled calculator |
Open/closed book | Closed Book examination - no written materials permitted |
Exam platform | Paper based |
Invigilation | Invigilated in person |
You may be able to defer this exam.
Full criteria for each grade is available in the Assessment Procedure.
Grade | Description |
---|---|
1 (Low Fail) |
Absence of evidence of achievement of course learning outcomes. Course grade description: Overall mark is in the range 0 to 19. |
2 (Fail) |
Minimal evidence of achievement of course learning outcomes. Course grade description: Overall mark is in the range 20 to 44. |
3 (Marginal Fail) |
Demonstrated evidence of developing achievement of course learning outcomes Course grade description: Overall mark is in the range 45 to 49. OR Overall mark is > 49 but either of the final exam mark or overall assignment mark are < 40%. |
4 (Pass) |
Demonstrated evidence of functional achievement of course learning outcomes. Course grade description: Overall mark is in the range 50 to 64 and both the final exam mark and the overall assignment mark are >= 40%. |
5 (Credit) |
Demonstrated evidence of proficient achievement of course learning outcomes. Course grade description: Overall mark is in the range of 65 to 74 and both the final exam mark and the overall assignment mark are >= 40%. |
6 (Distinction) |
Demonstrated evidence of advanced achievement of course learning outcomes. Course grade description: Overall mark is in the range of 75 to 84 and both the final exam mark and the overall assignment mark are >= 40%. |
7 (High Distinction) |
Demonstrated evidence of exceptional achievement of course learning outcomes. Course grade description: Overall mark is in the range of 85 to 100 and both the final exam mark and the overall assignment mark are >= 40%. |
Your overall assignment mark will be the weighted sum of your four assignment marks (i.e. weighted as per above). Passing this course requires demonstration of both theoretical and practical learning outcomes. You therefore must achieve at least 40% (22 out of 55) on your overall assignment mark to achieve a grade of 4 or higher. You must also achieve at least 40% on the final exam to achieve a grade of 4 or higher. Your overall course mark will be rounded to the nearest whole number prior to applying the grade cutoffs above. Examination and overall assignment marks are NOT rounded prior to checking the 40% hurdle.ᅠ
Supplementary assessment is available for this course.
Supplementary assessment for this course may take the form of a written supplementary exam, a programming task, an oral exam, or any combination of these. The exact form will depend on the reason you did not achieve a passing grade and will assess those learning outcomes for which you have not achieved a passing result. To pass the course after supplementary assessment you must achieve at least a passing level (50%) on the supplementary assessment to demonstrate you have achieved the learning outcomes.
Note that all assignments are to be worked on individually and must be your own work except where the use of code written or provided by other entities (teaching staff, Linux man pages, AI tools, etc.) is explicitly permitted by the assignment specification. Artificial Intelligence (AI) tools are permitted to be used in the programming assignments in this course but they are not required to be used and not recommended to be used as they may inhibit learning and introduce bugs into your code. You must always follow the referencing requirements set out in the assignment specification and documents referenced from the assignment specification. Failure to appropriately reference the resources (tools and information sources) used in your work may result in misconduct allegations against you. You are encouraged to discuss the concepts behind the assignments but under no circumstances should you show your code to, or allow your code to be seen by, another student. You should not look at the code of any other student. You must sufficiently protect all electronic and paper copies of your code. All submitted code will be subject to electronic plagiarism and collusion detection. Assignments with no academic merit will be awarded a mark of zero. You may have to verbally answer questions about your submission as part of the assignment marking process.ᅠ
In accordance with the Assessment Procedure, marks may be moderated and grade cutoffs may be lowered if academically justified.
The EAIT Associate Dean (Academic) has approved the use of five assessment tasks in this course based on sound pedagogical reasons.
Programming Assignment Interviews
For the programming assignments (one, three and four) the teaching staff will conduct interviews with a subset of students about their submissions for the purpose of establishing genuine authorship. If you write your own code, you have nothing to fear from this process. If you legitimately use permitted code from other sources (following the usage/referencing requirements in the assignment specification then you are expected to understand that code. If you are not able to adequately explain the design of your solution and/or adequately explain your submitted code (and/or earlier versions in your repository) and/or be able to make simple modifications to your solution as requested at the interview, then your assignment mark will be scaled down based on the level of understanding you are able to demonstrate and/or your submission may be subject to a misconduct investigation where your interview responses form part of the evidence. Interview invitations will be issued by email to your student email account at any time up until the end of week one of the exam period. Failure to respond to an interview invitation by the deadline stated in the invitation (which will be at least one week after the invitation is sent) or failure to attend a scheduled interview will result in zero marks for the assignment unless exceptional circumstances can be demonstrated with supporting evidence.
Having Troubles?
If you are having difficulties with any aspect of the course material you should seek help. Speak to the course teaching staff.
If external circumstances are affecting your ability to work on the course, you should seek help as soon as possible. The University and UQ Union have organisations and staff who are able to help, for example, UQ Student Services are able to help with study and exam skills, tertiary learning skills, writing skills, financial assistance, personal issues, and disability services (among other things).
Complaints and criticisms should be directed in the first instance to the course coordinator. If you are not satisfied with the outcome, you may bring the matter to the attention of the School of EECS Director of Teaching and Learning.
You'll need the following resources to successfully complete the course. We've indicated below if you need a personal copy of the reading materials or your own item.
Find the required and recommended resources for this course on the UQ Library website.
The learning activities for this course are outlined below. Learn more about the learning outcomes that apply to this course.
Filter activity type by
Learning period | Activity type | Topic |
---|---|---|
Multiple weeks From Week 1 To Week 13 |
Practical |
Pracs Pracs will commence in week one. Early pracs will have defined material you can work through. Learning outcomes: L01, L02, L03, L04, L05, L06, L08, L10 |
Lecture |
Lectures & Contacts Weekly lectures (2 hours) and contacts (1 hour) will introduce the course content and cover examples. In general (but not always) the contact sessions will be more practical in nature, e.g. covering practical issues, programming demonstrations, or working through exercises. In some weeks, the contact sessions will be used for the presentation of lecture materials. Learning outcomes: L01, L02, L03, L04, L05, L06, L07, L08, L09, L10 |
University policies and procedures apply to all aspects of student life. As a UQ student, you must comply with University-wide and program-specific requirements, including the:
Learn more about UQ policies on my.UQ and the Policy and Procedure Library.
Your school has additional guidelines you'll need to follow for this course: