Course organisation
Pre-requisites - is this course for you?
This course should be accessible to most if not all physics students. I do expect very little previous knowledge (since this is the one course where sustained work can get you a high mark), but if you want to be successful, you must have
-
A solid grasp of the “basic coding” (as obtained in the course PHYS 20161 or otherwise). You can refresh that knowledge in the first two weeks of the course!
-
A strong aptitude for and/or interest in programming in general
Aims
This is not a physics course. The way I see it has three aims
-
To provide an introduction to object-oriented programming (OOP) and design
- To develop fluency in programming in the (ANSI standard) C++ language
- Will mainly stick to C++14 (with some C++17)
- To develop a good programming style
Syllabus - see handbook for full list
- Basic C++ features (part revision)
- Data and file streams
- Classes and objects
- Inheritance
- Polymorphism
- Advanced C++ features
- The C++ standard library
We will use the C++14/17 standard, as implemented in Visual Studio 2019
Online material
- The course has a blackboard page, and space on my personal web page
- I will use nearpod: bring a device (easiest is to use the app and download material before lecture), or a laptop.
- All lecture notes and assignment details will be published through all of those three, but an index of the material will always be available on blackboard!
Assessment and feedback
-
All assessment is based on coursework (assignments and a project).
- Plagiarism checking will be undertaken on every assignment.
- The key to success is Practice, Practice and Hard Work!
Assessment is broken into 2 components:
- Weekly assignments (33%)
- Designed to give you practice at coding in C++
- Six problems closely aligned with lecture content
- Expected effort about 3-4 hours each for a reasonable mark
- Demonstrator assistance
- Assignment details given at end of classroom sessions
- Rubrics (marking scheme) and skeleton code for the early assignments will be available online
- Project (67%)
- No demonstrator assistance
- Choice of project (or you can suggest your own)
- Online feedback available
- More details towards end of course
Places and times
- Pre-lecture video to be released each week. We expect preparation!
- Lectures/Workshop
- on Mondays, 11am-12pm. Designed to be of limited use without having watched the videos
- Weeks 1-10 only (10 lectures)
- Assignment details at end of classroom session
- Computer lab through Teams
- 3 half-day slots: Wed (10-1), Thu (10-1), Fri (2-5).
Select your slot!
- Weeks 1-9 for assignments: demonstrators on-hand to give help.
- Weeks 10-12 )and earlier!!) for projects. No demonstrator assistance.
Practical details
- We will use VS Code and gcc, the preferred development environment for this course
- An overview of how to use VS Code (for C++) is on the course webpage
- Your code must be your own (although you are free to discuss issues with the demonstrators) - plagiarism will not be tolerated
- You are of course allowed to use your own computer (e.g. at home), but your code must run successfully in VSCode+gcc by the deadline for each assignment. You are responsible for this!
- Your code must be uploaded through blackboard, and it will be marked online soion after that.
- Important! Once uploaded, no further changes can be made.
Reading list
Use the library reading list, but especially useful:
cplusplus.com , learncpp.com