Note: This unit version is currently under review and is subject to change!

COMP2017: Systems Programming (2019 - Semester 1)

Download UoS Outline

Unit: COMP2017: Systems Programming (6 CP)
Mode: Normal-Day
On Offer: Yes
Level: Intermediate
Faculty/School: School of Computer Science
Unit Coordinator/s: Dr Stavrakakis, John
Session options: Semester 1
Versions for this Unit:
Site(s) for this Unit: https://elearning.sydney.edu.au/
Campus: Camperdown/Darlington
Pre-Requisites: INFO1113 OR INFO1105 OR INFO1905 OR INFO1103.
Co-Requisites: COMP2123 OR COMP2823 OR INFO1105 OR INFO1905.
Prohibitions: COMP2129 OR COMP9017 OR COMP9129.
Brief Handbook Description: In this unit of study, elementary methods for developing robust, efficient, and re-usable software will be covered. The unit is taught in C, in a Unix environment. Specific coding topics include memory management, the pragmatic aspects of implementing data structures such as lists and hash tables and managing concurrent threads. Debugging tools and techniques are discussed and common programming errors are considered along with defensive programming techniques to avoid such errors. Emphasis is placed on using common Unix tools to manage aspects of the software construction process, such as version control and regression testing. The subject is taught from a practical viewpoint and it includes a considerable amount of programming practice.
Assumed Knowledge: None.
Lecturer/s: Dr Stavrakakis, John
Tutor/s: Tyson Thomas (TA)

William Wang (TA)

Anuj Dhavalikar

Gregory McLellan

Simon Florian Koch

Alan Robertson

Ning Zhang

Yun Li

Byung Hoon Cho

Daniel Tam

Sam Arch

Michael Paul Zammit

Brody Franks

Abdul Zreika

Olivia Margit Nemes-Nemeth

Rachel Dowavic
Timetable: COMP2017 Timetable
Time Commitment:
# Activity Name Hours per Week Sessions per Week Weeks per Semester
1 Lecture 2.00 1 13
2 Laboratory 2.00 1 13
3 Independent Study 10.00 1 13
T&L Activities: Laboratory: Laboratory classes help the student consolidate the material presented in lectures. Activities include development of small programs, practice quiz questions, and open discussion of topics in systems programming.

Learning outcomes are the key abilities and knowledge that will be assessed in this unit. They are listed according to the course goal supported by each. See Assessment Tab for details how each outcome is assessed.

(8) Professional Effectiveness and Ethical Conduct (Level 2)
1. Apply code quality strategies appropriate for C, including preprocessor techniques, and use of common idioms.
(2) Engineering/ IT Specialisation (Level 2)
2. Use Unix commands and system calls (including usage of flags etc) from online manual system.
3. Demonstrate the approach and concepts of Unix, including its tools philosophy, processes (including pipes and redirection), the file system, and the shell.
4. Compose correct, clean code in C that allocates, deallocates and manages memory.
5. Construct correctly implement standard linked list data structures. Higher performance could involve slightly more complicated structures such as binary search trees.
6. Assess code execution using debugging tools.
7. Apply a thorough automated testing regime using tools such as make, diff, scripts to present the outcomes, and a tool to manage regression testing. Higher performance could involve ability to construct such a regime.
8. Compose code that correctly uses the main standard library functions, especially for I/O, file handling, and string handling. Higher performance could involve elegant use of these functions, particularly avoiding idioms which are extremely inefficient.
(3) Problem Solving and Inventiveness (Level 2)
9. Evaluate common memory-related errors (such as memory leaks, dangling pointers) and how to avoid these.Higher performance could involve detecting errors in example code, and fixing them using debuggers.
10. Construct, debug, and evaluate parallel or concurrent programs.
Assessment Methods:
# Name Group Weight Due Week Outcomes
1 Weekly task No 10.00 Multiple Weeks (During your timetabled class) 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
2 Online tasks No 0.00 Multiple Weeks 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
3 Quiz 1 No 5.00 Week 5 1, 2, 3, 4, 5, 8, 9,
4 Computer Exam 1 No 0.00 Week 7 1, 2, 3, 4, 5, 6, 7, 8, 9,
5 Quiz 2 No 5.00 Week 9 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
6 Computer Exam 2 No 15.00 Week 12 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
7 Assignment No 15.00 Week 12 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
8 Final examination No 50.00 Exam Period 1, 3, 4, 5, 8, 9, 10,
Assessment Description: Weekly task

- Complete an activity based on the tutors direction

- Attendance required during tutorial

- To be completed using standard laboratory computer

Online computing tasks

- The online tasks are a series of programming exercises to be completed throughout the semester. These are released regularly and have varying submission dates. Late enrolments (up to week 4) will be able to submit prior weeks.

Quiz

- Test both knowledge and skills of course materials in the semester thus far.

- Attendance during tutorial

- Duration is 15 - 45 minutes

- Pen and paper, no computers to be used

Practical Computer Exam

- Develop and/or debug a computer program from a description with examples

- To be completed using standard laboratory computer

- See timetable for time and location of event

- Duration may vary from 40 minutes to 2 hours

- The grading process will use a similar, yet different, set of test data for evaluating the correctness.

Assignments

- Demonstrating programming ability from specification

- Produce a set of test cases for a given specification

- To be completed independently

- Student will be assessed by both online and through teaching staff in the tutorial following the deadline

Final Exam: The final exam covers all aspects of the course and may involve answering questions about the C language and Unix system, reading short programs and writing short programs, and understanding concurrent and parallel programming.

Late penalty is consistent with Clause 7A of the Assessment procedure. 5% per day.

Non-attendance for in lab assessment tasks, such as manual marking, or exercises, will award zero marks, unless special consideration is granted.

In the event of academic dishonesty, assessments may be removed and the final examination is re-weighted.

The pass requirement for this course is:

at least 50% in the written examination to qualify for a pass in this course, AND

at least 40% in all other assessments that are not the final examination, AND

at least 50% final mark overall
Assessment Feedback: Practice problems provided throughout semester. Online forum to support students questions and feedback.

Online computer tasks, weekly tasks and computer examination are automatically graded. Further feedback is provided by the grading software.
Assignments.

Assignments. The tutors will provide further feedback to students about correctness, style and testing.

Quizzes. Tutors mark the quiz and provide annotations where needed.
Grading:
Grade Type Description
Standards Based Assessment Final grades in this unit are awarded at levels of HD for High Distinction, DI (previously D) for Distinction, CR for Credit, PS (previously P) for Pass and FA (previously F) for Fail as defined by University of Sydney Assessment Policy. Details of the Assessment Policy are available on the Policies website at http://sydney.edu.au/policies . Standards for grades in individual assessment tasks and the summative method for obtaining a final mark in the unit will be set out in a marking guide supplied by the unit coordinator.
Special Conditions to Pass UoS It is a policy of the School of Information Technologies that in order to pass this unit, a student must achieve at least 40% in the formative assessment and 40% in the final exam. A student must also achieve an overall final mark of 50 or more. Any student not meeting these requirements may be given a maximum final mark of no more than 45 regardless of their average.
Policies & Procedures: IMPORTANT: School policy relating to Academic Dishonesty and Plagiarism.

In assessing a piece of submitted work, the School of Computer Science may reproduce it entirely, may provide a copy to another member of faculty, and/or to an external plagiarism checking service or in-house computer program and may also maintain a copy of the assignment for future checking purposes and/or allow an external service to do so.

Other policies

See the policies page of the faculty website at http://sydney.edu.au/engineering/student-policies/ for information regarding university policies and local provisions and procedures within the Faculty of Engineering and Information Technologies.
Prescribed Text/s: Note: Students are expected to have a personal copy of all books listed.
  • Computer Systems: A Programmer`s Perspective
Recommended Reference/s: Note: References are provided for guidance purposes only. Students are advised to consult these books in the university library. Purchase is not required.
  • Principles of Parallel Programming
  • Problem Solving and Program Design in C
  • The C Programming Language
  • The Indispensable Guide to C
Online Course Content: You will need to have UniKey credentials to access course material via elearning website

https://elearning.sydney.edu.au/

Note that the "Weeks" referred to in this Schedule are those of the official university semester calendar https://web.timetable.usyd.edu.au/calendar.jsp

Week Description
Week 1 Lecture: Admin/Introduction to C
Week 2 Lecture: Addressable memory I, string and arrays
Lab: First C programs with text processing
Week 3 Lecture: Addressable memory II, structures and files
Lab: C pointer basics, C library functions
Week 4 Lecture: Memory management and linked lists
Lab: C pointers, structs, unions and files
Assessment Due: Quiz 1 (Edit from Assessments Tab)
Week 5 Lecture: C compiler stages and function pointers, Unit testing
Lab: Dynamic memory and debugging
Assessment Due: Quiz 1
Week 6 Lecture: Debugging C, processes and bit fields
Lab: Program structure, common C errors
Week 7 Lecture: Parallelism and concurrency
Lab: Compiler stages and linked lists
Assessment Due: Computer Exam 1
Week 8 Lecture: Signals and IPC
Lecture: Thread synchronisation, POSIX threads
Week 9 Lecture: Thread safety: Testing and Debugging
Lab: Parallelism and concurrency
Assessment Due: Quiz 2
Week 10 Lecture: Scalable algorithm templates
Lab: Shared memory
Week 11 Lecture: Performance - memory and measure
Lab: Thread constructs & reliability
Week 12 Lecture: TBA
Lab: Recursion and advanced topics in C
Assessment Due: Computer Exam 2
Assessment Due: Assignment
Week 13 Lecture: Revision and Examination overview
Lab: Revision
Exam Period Assessment Due: Final examination

Course Relations

The following is a list of courses which have added this Unit to their structure.

Course Year(s) Offered
Bachelor of Advanced Computing (Computer Science Major) 2018, 2019
Bachelor of Computer Science and Technology 2017, 2016
Bachelor of Computer Science and Technology (Advanced) 2017, 2016
Software Mid-Year 2018, 2019
Software/ Project Management 2019
Software 2017, 2018, 2019, 2016
Software / Arts 2017, 2018, 2019, 2016
Software / Commerce 2017, 2018, 2019, 2016
Software / Medical Science 2017, 2016
Software / Music Studies 2017, 2016
Software / Project Management 2017, 2018, 2016
Software / Science 2017, 2018, 2019, 2016
Software/Science (Health) 2018, 2019
Software / Law 2017, 2018, 2019, 2016
Bachelor of Information Technology 2017, 2015, 2016
Bachelor of Information Technology/Bachelor of Arts 2017, 2015, 2016
Bachelor of Information Technology/Bachelor of Commerce 2017, 2015, 2016
Bachelor of Information Technology/Bachelor of Medical Science 2017, 2016
Bachelor of Information Technology/Bachelor of Science 2017, 2015, 2016
Bachelor of Information Technology/Bachelor of Laws 2017, 2015, 2016
Software/Science (Medical Science Stream) 2018, 2019
Bachelor of Advanced Computing/Bachelor of Commerce 2018, 2019
Bachelor of Advanced Computing/Bachelor of Science 2018, 2019
Bachelor of Advanced Computing/Bachelor of Science (Health) 2018, 2019
Bachelor of Advanced Computing/Bachelor of Science (Medical Science) 2018, 2019
Bachelor of Advanced Computing (Computational Data Science) 2018, 2019
Bachelor of Advanced Computing (Information Systems Major) 2018, 2019
Bachelor of Advanced Computing (Software Development) 2018, 2019
Bachelor of Computer Science & Tech. Mid-Year 2016, 2017
Biomedical Mid-Year 2016, 2017, 2018, 2019
Biomedical 2016, 2017, 2018, 2019
Electrical Mid-Year 2019
Electrical 2019
Bachelor of Project Management (Built Environment) 2018
Bachelor of Project Management (Civil Engineering Science) 2018
Bachelor of Project Management (Software) 2018
Bachelor of Project Management (Built Environment) Mid-Year 2018
Bachelor of Project Management (Civil Engineering Science) Mid-Year 2018
Bachelor of Project Management (Software) Mid-Year 2018

Course Goals

This unit contributes to the achievement of the following course goals:

Attribute Practiced Assessed
(6) Communication and Inquiry/ Research (Level 1) No 0%
(7) Project and Team Skills (Level 2) No 0%
(8) Professional Effectiveness and Ethical Conduct (Level 2) No 14%
(5) Interdisciplinary, Inclusiveness, Influence (Level 2) No 0%
(4) Design (Level 2) No 0%
(2) Engineering/ IT Specialisation (Level 2) No 54.25%
(3) Problem Solving and Inventiveness (Level 2) No 31.75%
(1) Maths/ Science Methods and Tools (Level 2) No 0%

These goals are selected from Engineering & IT Graduate Outcomes Table 2018 which defines overall goals for courses where this unit is primarily offered. See Engineering & IT Graduate Outcomes Table 2018 for details of the attributes and levels to be developed in the course as a whole. Percentage figures alongside each course goal provide a rough indication of their relative weighting in assessment for this unit. Note that not all goals are necessarily part of assessment. Some may be more about practice activity. See Learning outcomes for details of what is assessed in relation to each goal and Assessment for details of how the outcome is assessed. See Attributes for details of practice provided for each goal.