Course Details

Course Code COMP1511
Course Title Programming Fundamentals
Lecturer/Convenor Marc Chee
Admin Tom Kunc
Lectures Tuesday 11am-1pm online
Friday 11am-1pm online
Details for online lectures are below
Tutorials and Labs Timetable for all classes
Help Sessions Face to Face 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.

2020 Covid-19 Edition: Lectures are now being delivered entirely via YouTube Live, with links being provided each week alongside slides.

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

Lectures in Week 6 are optional.

Live Streaming and Videos
In addition to scheduled lectures, there will 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 very 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 exercises based on the lecture material. You should make sure that you use them effectively by examining in advance the material to be covered in each week's tutorial, by asking questions, by offering suggestions and by generally participating. The tutorial questions will be linked to on WebCMS3 in the week before each tutorial. There are no marks for tutorial attendance.

2020 Covid-19 Edition: Tutorial/Labs will be run online via a system called Blackboard Collaborate. Links for Tutorial/Lab sessions will be available via Moodle.

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.

Most lab exercises will be done in pairs or small groups, and you and other students can work through them together, learning from each other. Tutors will facilitate you forming pairs/groups during Laboratory Sessions.

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.

2020 Covid-19 Edition: Since tutorial/labs are online, forming groups and working with other students is a little more difficult than when physically located together. We will be making use of breakout rooms in tutorial/labs to allow students to discuss and share work with each other while in a Blackboard session.

There will be some in-person Tutorial/Laboratory sessions held on campus at UNSW Sydney, strictly under social distancing rules. These will be opt-in only and the course is still entirely available online. They will be organised based both on demand and if tutors are available and willing to take these classes.

Lab Submission and Marking
Each lab exercise will be submitted using the "give" system. All students will need to submit solutions, even if they've worked in a group and have the same solution as someone else.

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 5pm Sunday (Sunday 20:00) in the same week as the lab.

Labs will be marked automatically around a week after the due date.

When marking is complete you can see marks online here or by running this command on a CSE machine:

1511 classrun -collect exercise_name

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).

Challenge Exercises in labs are not necessary to complete and it is possible to obtain full marks without attempting any Challenges. Any marks from Challenge exercises will only be added to your marks if they are below the maximum total for labs.

Help Sessions

There will be consultation sessions starting in week 2 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.

2020 Covid-19 Edition: Help Sessions will be held online through Blackboard Collaborate. Students will still be able to receive one on one help in these sessions, but Help Sessions will not be held on campus at UNSW.

Weekly Coding Tests

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

These are conducted in two stages:

The first stage is in your own time under self-enforced exam-like conditions. This gives you both accurate feedback on your progress as well as some practice for coding under time constraints.

Each test will specify the conditions but typically these will include:

  • No assistance from any person.
  • A time limit (1 hour).
  • No access to materials (written or online) except specified language documentation or man pages.

After you've completed that stage, you will have a reasonable idea of how you're going in the course at this time and what topics you might want to study further.

The second stage is treating the test like a lab exercise and continuing it 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. There will be partial marks for attempts which do not pass automatic tests. Here is an indicative guide:

Passes all automatic tests. 1/1
Fails several automatic tests. 0.75/1
Any attempt at the test 0.5/1

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 5pm 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, Week 6) 15%
  • Assignment 2 (Submission, Week 10) 25%

The assignment weighting and deadlines may change a little 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 1% reduction in maximum possible mark for every hour late.

Final Exam

2020 Covid-19 Edition: In 2020 Term 3, the Exam will be a take-home exam (exact length of the exam is yet to be determined). 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 which 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. The final exam will contain multiple questions (clearly marked) which if answered successfully will meet this requirement. Answering any one of these questions will meet this requirement.

Requirement#2: on the final exam you must solve a task by writing a program that uses a linked list. The final exam will contain multiple questions (clearly marked) which if answered successfully meet this requirement. Answering any one of these questions will meet this requirement.

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

2020 Covid-19 Edition: In 2020 Term 1, this course was marked SY/FL with no numeric mark. This term it will be marked regularly, that is, you will receive a mark out of 100, and a grade of HD/DN/CR/PS/FL.

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 enrolment 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 on-line 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
Lab Exercises All topics Weeks 2-10 10%
Weekly Tests All topics Weeks 3-10 5%
Assignment 1 Looping and Arrays Week 6 15%
Assignment 2 Linked Lists Week 10 25%
Final Exam All topics Exam period 45%

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 Problem Solving and Looping Variables and If Statements Variables and If Statements
- - -
3 Code Style, Code Reviews, Functions and Arrays Looping Looping
- - Basic Input/Output, if statements
4 Functions, Arrays, Memory and Pointers Code Reviews, Functions and Arrays Code Reviews, Functions and Arrays
Assignment 1 overview Assignment 1 released Looping
5 Debugging, Characters, Strings and Structs Functions, Arrays and Pointers Functions, Arrays and Pointers
- - Functions and Arrays
6 Flexibility Week. Guest Lectures, Halfway Course recap. Professionalism No Tutorials No Labs - Assignment 1 due No Test
7 Memory Allocation, Multi-file projects and Linked Lists Characters, Strings and Structs Characters, Strings and Structs
- - 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 Tutorial for any that were missed due to Public Holidays Revision Lab for any that were missed due to Public Holidays Revision stream - -

Resources for Students

There is no requirement for a text book for COMP1511.

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

Every term, COMP1511 student feedback is requested in a survey at the end of this course using UNSW's myExperience online survey system.

This feedback is used to improve the course materials and their delivery.

2020 has provided a very unique opportunity to test online teaching for COMP1511. In general, we found that Live Streaming was a much more favourable format than live lectures, so we'll definitely be continuing that, even potentially focusing more on that style of interactive teaching than the old fashioned lectures.

We still have some work to do on more interactive teaching in labs, which have seen the most change in the switch to online teaching. Luckily, we've received a lot of useful feedback that we're hoping to put into effect. This term there will possibly be a combination of in-person and online tutorials, so we will hopefully learn something useful from that combination.

Students are also encouraged to provide informal feedback during the session, and to let the course staff know of any problems, as soon as they arise.

CSE may also run its own survey, midway through the term, to ellicit 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 01 September 2020, 09:30:25 PM, last modified Sunday 29 November 2020, 11:22:31 AM.

Back to top

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