Course Details

Course Code COMP1511
Course Title Programming Fundamentals
Lecturer/Convenor Sasha Vassar
Admin Tom Kunc and Shrey Somaiya
Lectures Tuesday 10am-12pm online
Wednesday 2pm-4pm online
Details for online lectures are below
Tutorials and Labs Timetable for all classes
Help Sessions Online Help Sessions will be timetabled soon . . .
Course Contact Email
Units of Credit 6
Course Website
Handbook Entry

Course Summary

This course is an introductory course into the basics of Computer Programming and Computer Science. It is intended as an introduction to studying further in Computer Science or related fields. Topics include:

  • Fundamental programming concepts
  • Introduction to Computer Science
  • The C programming language and use of a C compiler
  • Programming style
  • Program design and organisation concepts
  • Program testing and debugging

Assumed Knowledge

Before commencing this course, students should:

  • Have basic computer literacy (not necessarily have programmed before)

Otherwise, COMP1511 assumes no background knowledge.

Student Learning Outcomes

This course aims for students to become proficient in a high-level programming language, C. It also focuses on mental preparedness for programming long term, including problem solving, debugging and testing.

After completing this course, students will:

  • Have basic proficiency with the C programming language
  • Have the ability to analyse a problem and solve it using programming
  • Have learnt some techniques for debugging and testing code and programs
  • Understand how to use basic data structures like arrays and linked lists
  • be able to use the basics of a Linux-like, command line driven operating system

Teaching Strategies

This course has a heavy practical orientation. Lectures will revolve around live demonstrations of programming and use of tools. Labs and assignments are also highly practical.

On top of this, the course is not just about the specific technical aspects of Programming, but also a preparation for studying Computer Science and the thought processes and skills necessary for a career in the field.


Lectures will be used to present the theory and practice of the techniques and tools in this course. There will be extensive use of practical demonstrations during lectures. Lecture notes will be available on the course web pages before each lecture.

Lectures will be delivered as YouTube Live streams.

All lectures will be recorded. For anyone who cannot access the live stream or who cannot access them live, lecture recordings will be made available.

There are no course related lectures in Week 6 (Flexibility Week), however, we often run guest lectures covering different topics in programming that are optional and may be of interest

Live Streaming and Videos
In addition to scheduled lectures, there may be some more informal streams and pre-recorded videos to give students a chance to ask questions directly, as well as, cover content that is not "official" course content, but still might be useful.

Tutorial/Lab Sessions

From week 1 you will also be expected to attend a three hour tutorial/laboratory session to clarify ideas from lectures and work through lab exercises, based on the lecture material. You should make sure that you use this time effectively by examining in advance the material to be covered in each week's tutorial. This means that you are coming to class prepared to ask any questions that you may have, and generally participate in class by offering suggestions - this will ensure that you get the most possible out of the tutorial/lab session. Your tutors are there to help you clear up any misunderstandings or to understand topics in more depth. The tutorial questions will be linked to the class webpage in the week before each tutorial. There are no marks for tutorial attendance, however, it is your chance to have all your questions answered.

Due to the current COVID-19 restrictions, tutorial/labs will all be run online via a system called Blackboard Collaborate. Links for Tutorial/Lab sessions will be available on Moodle. We will notify you if there are opportunities for face-to-face classes to resume, based on the government and university restrictions at any given time.

Following the theoretical section of the Tutorial/Lab session, there will be time to work on practical exercises, as well as, have some time to have one-on-one conversations with your tutors to get specific help.

Because this course is practical in nature, laboratory classes are a very important component. If you do not put a great deal of effort into the lab classes you risk failing the final exam. Please use laboratory sessions to ask tutors for any help you may need if you are stuck on that week's problems.

There are also some Challenge Exercises for anyone looking to push beyond the course content, or see some interesting continuation of the content in the course. They are not necessary to complete.

Lab Submission and Marking
Each lab exercise will be submitted using the "give" system. All students will need to submit solutions.

If you cannot complete any exercises by the end of the lab, you may complete them in your own time and submit them using the "give" command before 8pm Monday (Monday 20:00 AEST) in the week after the lab.

Labs will be marked automatically around a week after the due date. When marking is complete you can see marks online here .

There are no marks for Lab 1, it's there to help you get started. Your total mark will be made up of the best 7 out of 8 of the labs from weeks 2-10 (there is no lab in week 6).

Lab exercises have an indicative level of complexity:

Indicator Level of Complexity Marks total per week
●◌◌ Every student in the course should be able to complete these. Students who don't complete these may struggle to pass the course. If you are having trouble completing these exercises, please contact us or come along to the help session, so that we can help you. 1 mark per week
●●◌ Every student in the course should attempt these. These questions may take slightly longer to solve, but will help to link together concepts taught in lectures and tutorials with the practical components. Being able to solve these questions will be helpful in assignments, the exam, or in future courses. 0.5 marks per week
●●● These exercises are for students who want to be exposed to more complex applications of content they've been taught. While it's not essential, students who complete these exercises are better prepared for later parts of assignments and exams. These exercises usually require a lot more time to solve and complete. 0.5 marks per week
These exercises are for students who want to extend themselves. They may not necessarily teach you more programming, but will expose you to difficult problems and interesting parts of Computer Science, where you will get a good opportunity to practice some killer problem solving skills! no marks, only for challenge.

Help Sessions

There will be consultation sessions starting around week 3 or 4,where tutors will be available for one-on-one help with specific problems and assignment clarification. These sessions are optional and will run at different times during the week, with more sessions available around assignment deadlines and in later weeks of the term. Check the course timetable for what Help Sessions have been scheduled.

Weekly Coding Tests

There will be 7 weekly coding tests from weeks 3-5 and 7-10 designed to give you timely & realistic feedback on your understanding of the course material.

When you commence the weekly test, please time yourself for one hour (self-enforced exam conditions). This gives you both accurate feedback on your progress as well as some practice for coding under time constraints. You will still have there rest of the week to work towards solving the weekly test exercises.

During your self-enforced conditions, typically:

  • No assistance from any person, or asking questions online.
  • Try to set a time limit (1 hour), so you can see where your progress is at.

This will give you a reasonable idea of how you're going in the course at this time and what topics you might want to study further.

After you finish the time limit and the self-enforced exam conditions, you then have a lot more time to complete the exercises if that first hour was not enough. You can then continue working on the questions with whatever resources you'd like to use. The only difference is: We won't be discussing the weekly tests on the forums until after everyone's had a chance to complete them. We don't want to spoil other people's feedback by giving them the answers too early.

Each coding test will be automatically marked. Partial marks will be awarded based on the percentage of marking tests passed. These tests will be similar to the automated tests provided to you but may differ slightly.

Marks for the coding test component will be the sum of the best 6 of 7 test marks.

Any deliberate violation of the test conditions will result in a mark of zero for the entire programming test component.

The weekly programming test must be completed by Thursday 8pm the week after it is released.


There are two assessable programming assignments. Assignments give you the chance to practice what you have learned on relatively large problems (compared to the small exercises in the labs). Assignments are a very important part of this course, therefore it is essential that you attempt them yourself. Collaboration with other students is limited to discussion of fundamentals, not any discussion of assignment specifics.

  • Assignment 1 (Submission in Week 6) 15%
  • Assignment 2 (Submission in Week 10) 25%

The assignment weighting and deadlines may vary slightly when the assignment designs are complete.

Late assignments submissions will be penalized. The exact penalty will be specified in the assignment specification - typically it is 2% reduction in maximum possible mark for every hour late.

Final Exam

In 2021 Term 3, the Exam will be a 6 hour long take-home exam. The actual working time of the exam is only expected to be around 3 hours, but due to time zone differences for current students, all students will be given a longer time window to complete the exam.

It will contain implementation tasks that will require you to write C programs. It will also contain sections which require you to read code or answer questions to show your knowledge of programming.

During this exam you will be able to execute, debug and test your answers. The implementation tasks will be similar to those encountered in lab exercises and Weekly Tests.

Special Exam Requirements
COMP1511 has two requirements on the final exam.

Requirement#1: on the final exam you must solve a task by writing a program that uses an array. There will be multiple, clearly marked, questions that will involve the use of an array. You must answer one of these questions to meet this requirement.

Requirement#2: on the final exam you must solve a task by writing a program that uses a linked list. There will be multiple, clearly marked, questions that will involve the use of a linked list. You must answer one of these questions to meet this requirement.

You can not pass COMP1511 unless you achieve both the above requirements.

Student Conduct

The Student Code of Conduct ( Information , Policy ) sets out what the University expects from students as members of the UNSW community. As well as the learning, teaching and research environment, the University aims to provide an environment that enables students to achieve their full potential and to provide an experience consistent with the University's values and guiding principles. A condition of enrollment is that students inform themselves of the University's rules and policies affecting them, and conduct themselves accordingly.

In particular, students have the responsibility to observe standards of equity and respect in dealing with every member of the University community. This applies to all activities on UNSW premises and all external activities related to study and research. This includes behaviour in person as well as behaviour on social media, for example Facebook groups set up for the purpose of discussing UNSW courses or course work. Behaviour that is considered in breach of the Student Code Policy as discriminatory, sexually inappropriate, bullying, harassing, invading another's privacy or causing any person to fear for their personal safety is serious misconduct and can lead to severe penalties, including suspension or exclusion from UNSW.

If you have any concerns, you may raise them with your lecturer, or approach the School Ethics Officer , Grievance Officer , or one of the student representatives.

Plagiarism is defined as using the words or ideas of others and presenting them as your own. UNSW and CSE treat plagiarism as academic misconduct, which means that it carries penalties as severe as being excluded from further study at UNSW. There are several online sources to help you understand what plagiarism is and how it is dealt with at UNSW:

Make sure that you read and understand these. Ignorance is not accepted as an excuse for plagiarism. In particular, you are also responsible that your assignment files are not accessible by anyone but you by setting the correct permissions in your CSE directory and code repository, if using. Note also that plagiarism includes paying or asking another person to do a piece of work for you and then submitting it as your own work.

UNSW has an ongoing commitment to fostering a culture of learning informed by academic integrity. All UNSW staff and students have a responsibility to adhere to this principle of academic integrity. Plagiarism undermines academic integrity and is not tolerated at UNSW. Plagiarism at UNSW is defined as using the words or ideas of others and passing them off as your own.

If you haven't done so yet, please take the time to read the full text of

The pages below describe the policies and procedures in more detail:

You should also read the following page which describes your rights and responsibilities in the CSE context:


Item Topics Due Marks Released Marks
Lab Exercises All topics Weeks 2-10 1 week after they are due. 10%
Weekly Tests All topics Weeks 3-10 1 week after they are due. 10%
Assignment 1 Looping and Arrays Week 6 Between weeks 8 and 9. 15%
Assignment 2 Linked Lists Week 10 After the final exam is sat. 25%
Final Exam All topics Exam period Before the T3 holidays. 40%

Course Schedule

Week Lectures Tutes Labs Live Streams Assignments Weekly Test
1 Course intro, Our First C Program (variables and if statements) Welcome, What is programming? Lab familiarization, Setting up working from home (VLAB), Basic Input/Output - - -
2 Structs, Looping and Code Style Variables and If Statements Variables and If Statements
- - -
3 Functions and Arrays Structs and Looping Structs and Looping
- - Basic Input/Output, if statements
4 Functions, Arrays, Memory and Pointers Functions and Arrays Functions and Arrays
Assignment 1 overview Assignment 1 released Looping
5 Debugging, Strings, Character functions and Multi-file projects Functions, Arrays and Pointers Functions, Arrays and Pointers
- - Functions and Arrays
6 Flexibility Week. Guest Lectures, Halfway Course recap. No Tutorials No Labs - Assignment 1 due No Test
7 Memory Allocation, and Linked Lists Characters, Strings Characters, Strings
- - Functions, Arrays and Pointers
8 Linked Lists Memory Allocation and Linked Lists Memory Allocation and Linked Lists
Assignment 2 overview Assignment 2 released Characters, Strings and structs
9 Abstract Data Types, Recursion Linked Lists Linked Lists
- - Memory and Linked Lists
10 Exam prep and Course recap Abstract Data Types Exam practice (past exam questions) - Assignment 2 due Past exam questions
11 Revision and study for the exam

Revision stream - -

Resources for Students

There is no requirement for a text book for COMP1511. Generally, students do not purchase this textbook. It covers material in a different way to the COMP1511 course materials, and goes into differing levels of content than this course. It may, however, be useful as a reference, or to explore some content in more detail.

The optional textbook for the course is: Programming, Problem Solving, and Abstraction with C by Alistair Moffat , ISBN 978 1 74103 080 3, which can be purchased from the UNSW Bookshop.

Course Evaluation and Development

At the end of every term, COMP1511 students are invited to provide their feedback about the course through the UNSW myExperience online survey system. This is used to assess the quality of the course in order to make on-going improvements. We do take this feedback seriously and use it to improve the course materials and their delivery. Students are also encouraged to provide informal feedback during the session, and to let the lecturer in charge or any of the course staff, know of any problems, as soon as they arise. Suggestions will be listened to very openly, positively, constructively and thankfully, and every reasonable effort will be made to address them. Recent MyExperience evaluations showed that students were highly satisfied with most aspects of the course. However, there are always things that can be improved, some changes that we are making this term:

- In particular, students really enjoyed tutorials/labs and found they learned a lot. We still have some work to do on more interactive teaching in labs, however, we have taken on a lot of feedback in 21T2 and will be trialling supplementary short videos to help with lab and tutorial questions.

- Additionally, students found the assignment specifications to be long and sometimes overwhelming, these will be overhauled this term to create a more streamlined approach and to help students with understanding the problem. Specifications will be broken down into more understandable stages and students will get an understanding of stage difficulty in the assignment.

- As per student feedback, to relieve some of the pressure on the high complexity material covered in the latter part of the course, we are trying to spread out the complexity across the first half of the course - shifting around some topics, such as Structures and chars to the first half of the term.

- Student feedback further indicated that the variable number of lab exercises was hard to approach, especially in weeks, where other things were also due. To combat this, we have streamlined the number of exercises across the different working weeks. Exercises also now give an indication of difficulty and marks associated with them for each of the weeks.

CSE may also run its own survey, midway through the term, to elicit feedback while courses are still running. This course improves only because we see the difficulties that students have and try to adjust things so that you get to learn what you need. If anything's not working for you, please let us know and we'll do whatever we can to help and hopefully help students in later cohorts as well.

Resource created Tuesday 24 August 2021, 01:37:36 PM, last modified Tuesday 28 September 2021, 04:38:55 PM.

Back to top

COMP1511 21T3 (Programming Fundamentals) is powered by WebCMS3
CRICOS Provider No. 00098G