class: center, middle ### COMP26020 Programming Languages and Paradigms *** # Unit Introduction &
Part 1 Logistics --- class: inverse, middle, center # Whole Unit Introduction --- # Unit Overview - **Year-long unit** that aims to cover the **principles of different programming language paradigms** - Compare and contrast the advantages and disadvantages of the imperative and functional programming paradigms - Describe the key principles of compilation - Highlight the impact of modern trends on programming languages. -- .center[Why do we need so many programming languages?] --- # Unit Content - Part 1 (5 weeks): **Imperative Programming (C)** - Pierre Olivier (C, 5 weeks) -- - Part 2 (5 weeks): **Compilation, Program Translation** - Rizos Sakellariou -- - Part 3 (3 weeks): **Object-Oriented Programming (C++)** - Pavlos Petoumenos -- - Part 4 (5 weeks): **Functional Programming (Haskell)** - Joe Razavi -- - Part 5 (3 weeks): **Advanced topics, Concurrency** - Joe Razavi, Pavlos Petoumenos Each part is self-contained, managed by its instructor --- # Unit Organisation - **Blended approach**: mix of live sessions, and asynchronous material (videos, exercises, etc) - Live session once a week - Support sessions ("lab"): basically office hours, drop-in for questions, feedback, etc. - Everything is accessible from Canvas -- - **Assessment**: - 70% final exam in May/June - 30% laboratory exercises - Five exercises in total: each one carries a different weight - No lab session per se, to be done on your free time - NB: the solution you submit has to be your own work! -- - Advice: don’t stay behind! --- # How to Get Help? - **Ask questions**: - In live lectures - In timetabled support sessions: - They are staffed (course unit lecturers and possibly Graduate Teaching Assistants - GTAs): people are there to help! - Use Canvas's discussion boards: encouraged! -- - **Think before emailing the instructors**: - You are 300+ - Only email instructors for critical/urgent matters --- # Part 1/C Organisation **Blended approach**: live sessions + asynchronous videos & exercises
--- # Part 1/C Organisation 1. **Lecture materials**: - Live lecture every Monday 12pm-1pm, located in *Simon Building Lecture Theatre B* - A set of videos to watch every week **after the lecture** -- 2. **Formative assessment** (not graded), every week: - Quiz (theory) + autocorrected programming exercises (practice) - To do every week **after reviewing the lecture materials** -- 3. **Summative assessment** (marked): 1 lab exercise, to be done on your free time at home and/or on the Department's machines -- 4. **Support sessions** - Come if you have any questions about the lecture materials and formative/summative exercises - Every other week starting week of 06/10, Friday 12pm-2pm in Kilburn LF31 --- # Course Website .large[On Canvas: https://canvas.manchester.ac.uk/courses/43660] - **Everything regarding part 1/C can be accessed from there:** - Schedule (what to do each week) - Videos, including live sessions recordings - Lecture notes and lecture slides - Summative lab exercise brief - Formative autocorrected programming exercises - Formative quizzes - Discussion board - Reading list --- # Required Software All programming exercises should be done in a Linux 🐧x86-64 (i.e. Intel CPU) environment with GCC 10-13. Several solutions: - **Use the Department's machines** - **Run Linux in an x86-64 VM** - Grab a VirtualBox VM image here: https://bit.ly/4nfHv9f -- - **Install Linux natively on your x86-64 machine** - If you know what you are doing - Ubuntu 22.04 recommended -- - **⚠️ Do NOT use native Windows/Mac or WSL environments ⚠️** - Won't provide support on these, and you may lose marks because of toolchain difference -- - **MacBooks with non-Intel (i.e. M1) CPUs**: some solutions given next, but the general advice is to come on campus and use lab machines --- # Lecture Videos - Videos and slides available on Canvas -- - When watching videos/attending lecture, **access the slides for code examples you can run in your browser**: - https://olivierpierre.github.io/comp26020 -- - Using the bottom-right links you can: - Download the file: click on the blue path - Get instructions on how to load and run it in a container that should run on Mac/Windows by clicking on the GitHub logo
```c #include
int main() { printf("hello, world!\n"); return 0; } ``` .codelink[
`00-logistics/sample-code.c`
] --- # Lecture Notes - https://olivierpierre.github.io/comp26020/ - Cover the same things as video but in written form - No need to read if you fully understand the lecture materials covered in the live session and videos - Useful if things are not 100% clear - Should also be useful for revision before the exams --- # Feedback on Lectures - Each slides deck ends with a link to a small feedback form - It's fully optional and anonymous, feel free to use it to tell what you think about the lecture in question - Your feedback will help to make the course better!
--- # Lab Assignment (marked) - Subject is already on Canvas - Development of a matrix processing library in C - Weight: 6.5% of the final COMP26020 mark - **50/50 coursework/exam weight split for the C part** --- ## Autocorrected Programming Exercises (not marked) - A few exercises per week: - Example here: https://olivierpierre.github.io/comp26020/exercise-set-2.html - Divided into **essential** and **additional** exercises -- - Autocorrected with `check50` - To trigger autocorrection, have your source code in the local folder and type on the command line: ```bash check50 -l --ansi-log
``` - URL is per-exercise, given on the page of each exercise -- - Accessible from the website, along with instructions on how to install `check50`: https://olivierpierre.github.io/comp26020/exercise-set-1.html --- # Quizzes - A small quiz to complete each week, after having seen all the lecture materials - On Canvas - Formative (unmarked) --- background-image: url(include/plagiarism.png) --- # How to Get Help? - Any question? In increasing order or urgency: - Step 1: come to the next support session - Step 2: discussion boards on Canvas - **Do not post answers there!** - Step 3 (only if urgent): [pierre.olivier@manchester.ac.uk](mailto:pierre.olivier@manchester.ac.uk)