COMP6771
Advanced C++ Programming
Week 1.1
Course Outline
Teaching Staff
Lecturer in charge | Lecturers | Tutors |
---|---|---|
Hayden Smith | Hayden Smith Christopher Di Bella Matthew Stark |
Adrian Martinez Gary Bai George Fidler Jason Zavaglia Josephine Anugerah Mirette Saleh Nathaniel Shead Oliver Richards Rahil Agrawal Ryan Fallah Saeed Baig Simon Hadded |
Course Objectives
You will develop:
- skills in writing software using C++20
- skills in using libraries to develop software
- skills in using tools to build and test software
- knowledge and understanding about unit testing
- knowledge and understanding about reactive programming, object-oriented programming, and generic programming
What is C++?
- Lightweight-abstraction programming language
- Lets you use the right abstractions at the right time
C++ Design Pillars
- Don't leave room for a language between C++ and assembly.
- Abstractions should have as little cost as possible.
C++ is not C
- C++ is backwards compatible with C, so it's easy to think that you can build your C++ understanding directly on top of your C understanding
- However, while valid C code is often valid C++, good C is is almost never good C++ code. Over the years C++ continues to diverge from C
-
For example, when we teach you best practice, we will not be using:
- malloc
- free
- C-style arrays
- C-style strings
-
And will be sometimes discouraging use of:
- raw pointers (char *, int *)
What's C++ good for?
Mars Curiosity Rover, courtesy NASA/JPL-Caltech.
©2018 Google LLC All rights reserved. Google and the Google logo are registered trademarks of Google LLC.
James-Webb Telescope, courtesy NASA/JPL-Caltech.
This course is an independent class and is neither affiliated with, nor authorized, sponsored, or approved by, Microsoft Corporation.
Learning Resources
Will help you in a pinch (e.g. before exams and interviews)
Also covers newer stuff the Swan book doesn't
Comprehensive intro to C++ (>100 pages of exercises!)
+
Learning Resources
Good for looking up APIs and recalling language rules
DO NOT USE CPLUSPLUS.COM
Good for looking up APIs and getting tips on how to use C++
Documentation on how to use the course editor
Where to get help
Your question/answer hierarchy:
- Piazza forum
- Your tutor (see Timetable page for links)
- Lecturers (cs6771@cse.unsw.edu.au)
- Hayden (hayden.smith@unsw.edu.au)
Questions that are non-sensitive will only be answered on the forum
Schedule & Structure
- See course outline for full course schedule
-
Weekly teaching provided includes:
- 4 hours of lectures
- 1 hour of tutorial
- 7+ hours of recommended practice and associated work
We may provide additional material and webinars to assist in your learning. While these will be recommended, they will not be required.
Assessment
Assessment | Weighting | Due Date |
---|---|---|
Assignment 1 | 15% | Late Week 3 |
Assignment 2 | 15% | Early Week 7 |
Assignment 3 | 20% | Early Week 10 |
Exam | 50% | Exam Period |
Assignment due dates are subject to change (never earlier), so always see the assignment specification for more information
Assessment
- Final exam may be scaled
-
Final exam:
- Hurdle exam
-
Assignments:
- have an emphasis on testing
- rely on version control (assumed knowledge)
- have a late penalty outlined in the specification
-
Plagiarism will not be tolerated.
- Immediate zero for assignment.
Gitlab
This course is taught on gitlab.
For every tutorial (9) and every assignment (3) we will automatically deploy new repositories and subsequent changes to those repositories in your gitlab account.
E.G. For me personally: https://gitlab.cse.unsw.edu.au/z3418003/20t2-cs6771-tut01
Gitlab
If you are not familiar with git, or haven't used vlab in course before, we encourage you to check out the git instructions provided in the first tutorial.
If you're really out of your depth, you can always post on the forum. Your tutor will demonstrate a bit more of this in week 1.
Feedback
During your first tutorial your tutor will ask for a few volunteers to be added to private channel with tutors to discuss and share thoughts around how they're finding the course.
COMP6771 20T2 - 1.1 - Course Outline
By cs6771
COMP6771 20T2 - 1.1 - Course Outline
- 1,436