Contents

Course Details

Course Code COMP1511
Course Title Programming Fundamentals
Convenor Dr Sasha Vassar
Admin Ben Briant and Tammy Zhong
Classes Monday 11am-1pm (hybrid: CLB6 and online)
Thursday 12pm-2pm (hybrid: CLB6 and online)

Tutorials and Labs Timetable for all classes
Consultations Online Help Sessions will be timetabled soon

More info in Help Session
Units of Credit 6
Course Email cs1511@unsw.edu.au
Course Website http://cgi.cse.unsw.edu.au/~cs1511/23T1/
Handbook Entry http://www.handbook.unsw.edu.au/undergraduate/courses/current/COMP1511.html
Student Reps stureps@cse.unsw.edu.au
Email the stureps if you have any issues with the course.
They will pass these anonymously to the relevant people to get the issues resolved.

Course Summary

From recent innovations in AI like self-driving cars to humanoid robotics navigating complex environments, leapfrogs in battery technology to sequencing the human genome - the world is benefiting and evolving thanks to computer systems. At the core of all these systems are computers executing instructions to solve exciting problems.

In this course, you will learn the fundamentals of how we instruct computers to solve problems. You will explore the architecture and mechanics of how computers operate and how you can translate real-world problems to computer programs that solve these problems.

The concepts you learn in COMP1511 will provide a foundation for your future endeavours in computing and, we hope, will begin to change the way you think about real-world problems.

This course is an introductory course to 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 long-term mental preparedness for programming, including problem-solving, debugging, and testing.

After completing this course, students will:

  • Apply C programming language to solve simple decision, looping, array, and linked list problems programmatically.
  • Review the produced code against specification criteria by applying testing techniques.
  • Apply basic data structures, such as arrays and linked lists, to solve complex problems.
  • Be able to read and understand coding solutions.

Teaching Strategies

This course has a heavy practical orientation. Lectures will revolve around live demonstrations of programming and the use of tools. Problem sets in 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

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. Live code from the lectures will also be made available for those students that are interested in following along or practicing during the post-lecture times.

Lectures will be delivered in hybrid mode. In-person lectures will be in the theatre (CLB6), however, we have a small capacity of seats available. Online, the lectures will be broadcast as YouTube Live streams.

For anyone who cannot access the live stream or who cannot access the lectures 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. This content may still be useful for overall student understanding.

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 Problem Sets, based on the lecture material. You should make sure that you use this time effectively by looking in advance at the material to be covered in each week's tutorial/laboratory. 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. There are no marks for tutorial attendance, however, it is your chance to have all your questions answered and to get feedback from your tutors.

The majority of our labs will run face-to-face this term, however, there are still some classes available online. Online classes will all be run online via Microsoft Teams. Links for online Tutorial/Lab sessions will be available within Microsoft Teams.

Following the theoretical section of the Tutorial/Lab session, there will be time to work on practical exercises, as well as 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. You are not required to complete these problems, but you may find it fun to do so!

Problem Set Submission and Marking
Each problem set will be submitted using the "give" system. All students will need to submit solutions to the Problem Sets each week.

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.

Problem sets will be marked automatically one week after the due date. When marking is complete you can see marks online using the course website .

Late penalties will apply if you submit the problem sets after their due date - this is a reduction of 5% per day late (off the ceiling) for 5 days, at which point the maximum mark drops to 0 .

Problem Sets have an indicator to help you choose which problems to do -- you should prioritise the one-dot exercises first, then two-dot, then three. You must complete all one-dot and two-dot exercises to get full marks in the problem set for the Week. Any three-dot exercises you complete will form extra bonus marks to compensate for any other missing marks in the problem set component.

There are no marks for Problem Set 1, it's there to help you get started. You will see a 0 as a total for Problem Set 1, as it is not counted towards your final mark.

Problem sets are capped at 15 marks (there are 4 possible bonus marks from the three-dot exercises that can bring you up to a total of 15 if you missed out on any other marks in the one- or two-dot exercises). Completing just the one- and two-dot exercises every week can give you the full 15 marks needed in this component.

Indicator Description Marks total per week
●◌◌ These exercises examine the most fundamental or crucial skills in the course. Every student in the course should complete these exercises to ensure they finish the term with the skills necessary to complete the exam and future courses.

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
●●◌ Every student in the course should attempt these. These questions may take slightly longer to solve than the questions of one dot importance; and may apply fundamental skills in more involved ways, but doing them 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 the exam, assignments, or in future courses.
1
●●● These exercises are for students who want to be exposed to more complex applications of the content they've been taught. These exercises usually require a lot more time to solve and complete.

Being able to solve these questions is helpful in the later stages of the assignment (Stages 3 and 4 of each assignment) and later questions of the final exam (Questions 6 onwards).
0.5
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

Help sessions will be run regularly throughout the term to make sure that we can answer any questions you may have. Please keep in mind that sessions get very busy close to assignment due dates, so please make sure to start assignments early. We will have a queuing system set up to allow everyone to be seen in an organised and orderly manner.

Assignments

There are two assessable programming assignments. Assignments allow you 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. All assignments are carefully checked for plagiarism, which can result in serious academic consequences (please refer to the Student Conduct section for more details about plagiarism) .

  • Assignment 1 (Submission in Week 7 Monday 8pm) 20%
  • Assignment 2 (Submission in Week 10 Friday 8pm) 25%

Late assignments submissions will be penalised - a reduction in the mark by 5% per day late for 5 days (off the ceiling), at which point the maximum mark drops to 0 .

Technical issues and assignment extensions - extensions will only be given on assignment due dates if there is scheduled server maintenance planned during the working time of the assignment, or in extreme circumstances when servers unexpectedly go down during business hours (8am-10pm). Please make sure to start your assignments early and work on them consistently throughout the term.

Final Exam

In 2023 Term 1, the Exam will be a 3-hour-long in-person exam. Those students that are currently located offshore will be contacted separately closer to the exam time to make other arrangements.

The exam will contain implementation tasks that will require you to write C programs. It will also contain sections that 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 your weekly Problem Sets.

We will provide you with sample questions in the last week of the course.

Special Exam Requirements
COMP1511 has two requirements for 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 pass one of these questions (by receiving at least 50% of the available marks) 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 using a linked list. You must pass one of these questions (by receiving at least 50% of the available marks) 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 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 and on social media, for example, Facebook groups set up for discussing UNSW courses or coursework. 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 policies. 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 is committed to fostering a learning culture 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:

Assessment

Item Topics Due Marks Released Marks
Problem Sets All topics Weeks 2-10 1 week after they are due. 15%*
Assignment 1 Arrays and more complex Control Flow Week 7 (Monday 8pm) Between weeks 8 and 9. 20%
Assignment 2 Linked Lists Week 10 (Friday 8pm) After the final exam is sat. 25%
Final Exam All topics Exam period Just before final mark release. 40%

* Problem sets are capped at 15 marks - so it is possible to get full marks without completing all the tasks. See Problem Sets Submission and Marking for more information.

Course Schedule

Week Lecture 1 Lecture 2 Tutorial Laboratory Extra Content Streams Assignments
1 Course intro
UNIX + Tools
What is a program
Procedures
Variables/Constants
Welcome
What is programming?
Setting up your environment

Basic Input/Output
Setting up your Environment -
2 Control Flow Custom Data Types
Control Flow and Variables Basic control flow
Variables
- -
3 Functions Static Arrays
Custom Data Types Custom Data Types - -
4 2D Arrays
Strings
Functions Functions
Arrays
Strings
Assignment 1 Overview Assignment 1 released
5 Pointers
(Guest: Dr Andrew Taylor)
Lecture Program 1: Arrays
(Guest: Tammy Zhong)
Arrays Arrays
Pointers
- -
6 Flexibility Week
NO LECTURE
Flexibility Week
NO LECTURE
NO
Tutorials
NO
Labs
- -
7 Dynamic arrays
Memory
(Guest: Dr Andrew Taylor)
Memory (heap vs stack)
Basic linked list
(Guest: Dr Andrew Taylor)
Pointers Memory allocation Assignment 2 Overview Assignment 1 due Monday 8pm

Assignment 2 released (end of the week)
8 Linked Lists Linked Lists Malloc and start of Linked Lists Linked Lists - -
9 Pubic Holiday
NO LECTURE
Lecture Program 2: Linked Lists Linked Lists Linked Lists - -
10 Exam details
Revision of course content Course Revision Exam practice (past exam questions) - Assignment 2 due Friday 8pm

Resources for Students

There is no requirement for a textbook for COMP1511. Generally, students do not purchase this textbook. It covers material in a different way from 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 so that we can make ongoing 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 term by letting the Lecturer in Charge or any of the course staff, know of any problems, as soon as they arise. Suggestions will be listened to 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:

  • We have made further adjustments to the way our topics flow into each other, to make sure things make sense and follow on logically from each other
  • We have introduced debugging methods into lecture content, and are introducing exercises every week that allows you to practice debugging to make sure that you are able to do this when it comes to working on larger assignments
  • More short videos are being made to support different ways of learning and complement the current materials
  • Help session requests will also now come with a little cheat sheet that will allow you to do some debugging whilst you wait to help us zero in on your problem faster and help you faster!
  • Students found help sessions to be sometimes frustrating due to long lines, and the ability to get help quickly and easily during busy assignment periods. To improve this, we will be starting help sessions earlier in the term and have also employed specific help session tutors to make sure that the availability of sessions is increased. During assignment time, we have also scheduled an extra tutor for each session with more on standby.
  • We will be providing an optional module, where students can submit code from any of the problem sets to get feedback and discuss the best ways of solving some of the questions. We hope that this will provide another avenue to reflect and get feedback and gain an understanding of your code. This will also give another avenue for helping with problems.

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 Wednesday 18 January 2023, 10:15:04 AM, last modified Wednesday 22 February 2023, 10:09:36 AM.


Back to top

COMP1511 23T1 (Programming Fundamentals) is powered by WebCMS3
CRICOS Provider No. 00098G