Skip to content

sseanik/unsw-course-recommendations

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

21 Commits
ย 
ย 

Repository files navigation

Sean's UNSW Computer Science Review

Note: These are my biased, optionated and subjective reviews. Courses are different for everyone, I myself, am a more practical programmer, thus I enjoyed more practical courses rather than theory. If I mention the structure or staff having a poor experience, they may have improved by now.

Core Courses

  • ๐Ÿ’ป COMP1511 - Programming Fundamentals

    • Description: Intro to Programming in C. Learn about arrays, looping, structs, pointers, functions, linked lists, a tiny bit of memory management and a tiny bit of testing (e.g. assert). Tutorials are engaging, labs are automarked, so you complete them, run tests, validate that it works and then submit. Tip: Do the extension labs even if you can't get 100% as even if you get a tiny percent, it counts.
    • Lecturer: Marc Chee. Great lecturer, easy to understand and overall gave an entertaining, fun vibe.
    • Difficulty: ๐ŸŸข Easy. It will be easy if you have prior coding experience, but potentially Medium if it will be all new to you. It has a very manageable weekly workload, assignments can take time, but are fine and the exam is exponentially difficult.
    • Review: Great course and structure. A practical course other than the exam having a 'Theory' portion (e.g. What does this code output?). Practice the weekly tests more to prep for the exam.
  • ๐Ÿ‘พ COMP1521 - Computer System Fundamentals

    • Description: Basically an intro to lower level programming (MIPS) and system level programming in C (e.g. Bit manipulation, file writing). This course helps you understand if you want to take OS, Networks, Concurrency, etc at a later stage.
    • Lecturer: Sahil - Good. I recommend taking this with Andrew Taylor as he is a fantastic lecturer.
    • Difficulty: ๐ŸŸ  Hard - That dam exam. Jashank has too much fun writing the exams. He forgets that it is for a first year course. I've never had an exam writer come into the lecture room, boast about writing the exam and then give a kinda half warning, half brag.
    • Review: The pre-exam stuff is manageable and sufficiently doable. It's a bit of an adjustment since you kinda learn more of the intricacies of C (not to mention MIPS), rather than being a continuation of 1511. Feels weird being 15TWO1, as I personally found it the hardest out of 1521, 1531 and 2521.
  • ๐Ÿ COMP1531 - Software Engineering Fundamentals

    • Description: Learn Python, Flask (backend Rest API) and Software Engineering aspects (e.g. Agile, Standups, DRY, KISS, State Diagrams). This course helps intro you into Git and source control. You also do a group project across the term with 3 iterations, first being Python & Pytest, second Flask & HTTP Testing and third being Flask, HTTP Testing & Requirements Analysis (e.g. user stories, acceptance criteria, use cases and state diagramming).
    • Lecturer: Hayden
    • Difficulty: ๐ŸŸข Easy if you have a good group, otherwise can be harder
    • Review: Terrific course. I tutor it, so if you're in my class, you lucked out. You need a good group (4 - 5), so recruit well or do it with friends. Python is a very nice and easy to pickup coding language, the labs and time commitment may challenge you, but you learn how to adapt along the way.
  • ๐Ÿ‘จโ€๐Ÿ’ป COMP2521 - Data Structures & Algorithms

    • Description: Feels like the next logical course after 1511 as it's still in C, which is kinda crazy. You need to do this course ASAP, because it is a prerequisite for pretty much everything. Recursion, Doubly Linked lists, Trees, Graphs, Sorting, Time Complexity, all very important in practice AND theory. There's practical content through labs, assignments and the exam, which are all not too hard, but not easy. Very much a practice makes perfect course.
    • Lecturer: Ashesh - Just gotta deal with it. If you can do this with Hayden, take it the term he teaches it.
    • Difficulty: ๐ŸŸ  Medium - Hard. It can be Hard if you don't put time into it. If you do 3 subjects a term including 2521, you may struggle, it's a course where you really want to spend as much time as you can on it for the course and your overall CS knowledge.
    • Review: The content of this course is up and down, but it's too important, kinda like a necessary pain. Once you get the hang of it, try to do some Leetcode problems involving Trees and Graphs (use C obviously) and you will be fine.
  • ๐Ÿ‘จโ€๐Ÿซ COMP2511 - Object Oriented Programming

    • Description: Learn Java, Classes, Inheritance, Encapsulation, OOP Design Principles. The major project is a pair assignment spanning the entire term. When I did it, we made a 2D Dungeon Crawler game (frontend using JavaFX).
    • Lecturer: Ashesh
    • Difficulty: ๐ŸŸก Medium. Difficulty depends if you have a good project partner.
    • Review: When I took it, it was a disaster. You need to complete labs, but then you get interviewed weekly on the theory behind it, rather than the lab itself? Exam was a mess, it got extended multiple times with bad communication. BUT, It has gotten a lot better now, especially with Nick and Braedon admining it. Another kind of necessary pain course, OOP is important, and by the time you take this course, it should be easier than 2521.
  • ๐Ÿงฎ COMP3821 - Extended Algorithms

    • Description: Pretty much a mathematical computer science course. There is zero coding. You will be writing Pseudocode, with a focus on Time and Space complexity, and proofs (e.g. proof by induction). You go through specific, useful algorithms, Dynamic Programming and more.
    • Lecturer: I forgot. Take it with have Aleks who is quite good.
    • Difficulty: ๐Ÿ”ด Very Hard
    • Review: The only reason I did extended version rather than (COMP3121) was because it was a Term 1 offering (core was not offered in T1) and I did it with a friend. I did it during Pass/Fail, so I can't comment much. If you have a good mathematical background, this won't be a problem. If you struggle with maths (like me), you will have a hard time.
  • ๐Ÿงฑ COMP3900 - Computer Science Project

    • Description: Capstone project where you work in a group of 5 to deliver an application (usually a web app). The course gives you a selection of choices, but your group can choose your own custom one if you wish. You have to write user stories, acceptance criteria, use Jira to track progress, use Github for source control and write up a proposal and final report.
    • Difficulty: ๐ŸŸข Easy - Hard. Completely depends on getting a good group. I advertised on their WebCMS forums detailing my coding and work experience and I recruited the best of my class.
    • Review: Great group project experience. My group had a frontend (React) & backend (Flask + AWS RDS PostgreSQL) teams and we worked very efficiently.
  • ๐Ÿ“š COMP4920 - Ethics in IT

    • Description: Pure theory, essay writing and the like. There are two Lecture Summaries, one pair Movie Review (on the Social Dilemma), a group (4 - 5) seminar/presentation discussion and a final company case study.
    • Lecturer: Wayne
    • Difficulty: ๐ŸŸ  Hard. If you have a good Movie Review partner and a good seminar group, this course will be easier. You need to absolutely not be shy and put your hand up to answer questions in seminars and engage in discussion. I'm a social butterfly, so it's easy for me, but if you're shy, it'll be hard for you to get seminar participation marks.
    • Review: Part of this course is weird and subjective. "In order to get a HD, you need to produce a journal quality essay", keeps being tossed around. It's quite an adjustment, just go back in time, to High School english, and write, reference and critically analyse Ethics in IT.

COMP/Free Electives

  • โŒจ๏ธ COMP2041 - Software Construction (STRONGLY RECOMMEND)

    • Description: Shell and Perl and all those unix shell commands you take for granted. Very very useful course, if you have heard of Regex, you learn it here. You could say it's a productivity scripting course, it just opens your eyes to why programming is so important. All practical, just like COMP1511 with automarking for labs, weekly tests, and dry tests for assignments.
    • Lecturer: Andrew Taylor - Great lecturer, made the content fun and interesting (e.g. he replaced all Hermione's in Harry Potter with his own name)
    • Difficulty: ๐ŸŸก Medium. The exam gets exponentially harder like in 1511. The assignments have very difficult parts at the end which are worth a tiny percentage, so to 100% them, it's hard.
    • Review: Very much a practical course. I loved it, very useful, highly recommend. You won't find a former student of 2041 giving it a bad review, the content is great, the lecturer is great, the structure is great, you can't lose here.
  • ๐Ÿ“‹ COMP3311 - Database Systems (STRONGLY RECOMMEND)

    • Description: Learn SQL, specifically PostgreSQL. DBMS, Entity Relationship Diagrams, SQL Queries, PLpgSQL functions, using Python and Psycopg2 to connect and execute database commands.
    • Lecturer: John Sheppard
    • Difficulty: ๐ŸŸข Easy.
    • Review: Very useful course, you will have to learn SQL at some point, why not in this course. The homework, assignments and even the exam have fun databases (e.g. pizza, beer databases) and the course is paced quite nicely. Some people dislike Jas cos he sounds 'old' and 'boring', but I found him quite endearing and he supported the cohort quite well.
  • ๐ŸŽจ COMP3511 - Human Computer Interaction

    • Description: You learn about UI and UX in a very theoretical way. You focus on 'paper prototypes' of a user interface and the theory behind how humans interact with technology. There is zero coding.
    • Lecturer: Sasha
    • Difficulty: ๐ŸŸข Easy. Can be harder if you get a garbage group, or you struggle thinking in a more artist centric way.
    • Review: You need to get used to having a design diary and you need to have a good group for the project with accompanying speech. It's a very 'arty' kind of computer course. This is the course that helps you learn the fundamental knowledge of a UI/UX designer and the 'why they do that'.
  • ๐Ÿ–ง COMP3331 - Computer Networks

    • Description: How the internet, the web, email, computer networks work. All those acynonyms you hear like TCP/UDP, IP, all that internet jargon is explained.
    • Lecturer: Wen Hu - Very eh. He talks fast and hard to understand at times. Not engaging. Take this with Sahil, i've heard better things with him.
    • Difficulty: ๐ŸŸ  Hard. The mid term had negative marking (i.e. multiple choice, if you get it wrong, -1 mark). Final exam, all theory. Some multiple choice, some short answer and some calculational short answers.
    • Review: The content is interesting, but it's dry. There's just too much. It's basically all theory, except for tiny pieces in the labs and an assignment where you build some program (in C, Java or Python, I did Python), so you need to really grasp the content. I got through it, but wish I didn't do it. Yes the content and knowledge you gain is useful, but it's too much.
  • ๐ŸŽญ COMP6841 - Extended Security Engineering

    • Description: You have an introduction into the wonderful world of Cyber Security and all things hacking (not just digital). The extended version teaches you practical/coding hacking such as XSS, SQL injection, rootkits, buffer overflows in C, etc. Do the extended version if you have intentions of doing 6443 or 6447 as you get a head start in those, doing extended. The extended version requires you to pick a practical/coding project and has a slightly different exam.
    • Lecturer: Richard Buckland. Wow what a guy.
    • Difficulty: ๐ŸŸก Medium. It's time consuming, content is easy to grasp though.
    • Review: Pick a very doable 'Something Awesome' project and put a solid amount of time into blogs. It's all just interesting content, you learn for the sake of hanging onto every word Richard says. Most people just take COMP6441 (core version), just to experience the intro to the Cyber World.
  • ๐Ÿ’” COMP6443 - Web Application Security

    • Description: Learn how to hack web applications in a practical and slightly theoretical way. You are given a bunch of web apps to hack, and once you successfully hack them, you find a flag (string of letters and numbers). The more you find, the higher your mark will be (it is in relation to your cohort). Core students get higher marks for less flags than extended, but just do core since you can watch the Extended lectures and learn while being a core student getting higher marks.
    • Lecturer: Rotational Industry Experts
    • Difficulty: ๐ŸŸก Medium
    • Review: Really fun course. You basically are doing a Capture the Flag every week for new topics, and a CTF for a midterm and final exam. You also have two group (of 5) reports on how you found the flags and the theory behind the methods of obtaining them (e.g. what is SQL injection). Probably the most, 'fun' course I took at UNSW.
  • ๐Ÿค– COMP6771 - Advanced C++ (STRONGLY RECOMMEND)

    • Description: You simply learn how to code in C++ in a very efficient way. Big trading companies (e.g. Optiver, IMC) love C++, and mostly use it, so it's quite a beneficial language to learn. Big game companies (e.g. Wargaming) love C++ too. It's also Advanced C++, so you learn the language, then you learn modern programming techniques.
    • Lecturer: Hayden
    • Difficulty: ๐ŸŸ  Hard. It can be difficult to grasp, and I am rating it a hard due to never completely 100%ing assignments, but I don't think it's a grind your teeth hard. It's easy to understand, but applying it, you are expected to code things correctly, not near-correctly.
    • Review: Hayden is a fantastic lecturer. You only really have 3 assignments and an exam, so the course is basically all practical. The assignments are hardish. They take time to complete and it's rare to get 100% in them.
  • ๐Ÿ–ผ๏ธ COMP6080 - Frontend (STRONGLY RECOMMEND)

    • Description: HTML/CSS -> Javascript -> Vanilla Javascript -> React. Very fun course. First assignment is recreate this image (of a website) in HTML, CSS and Javascript. Then given a backend, create a Vanilla Javascript frontend that uses it. Then given a backend, create a ReactJS frontend that uses it.
    • Lecturer: Hayden
    • Difficulty: ๐ŸŸก Medium - Assignments took time and exam was a hard one to finish on time. Just time is the issue, everything is easy enough to grasp.
    • Review: You only have 3 assignments and an exam. A purely practical course and extremely useful for your career. Hayden is always fantastic at lecturing. The assignments are also fun (instagram and kahoot clones). Highly recommend.
  • ๐Ÿ‰ COMP9321 - Data Service Engineering (STRONGLY RECOMMEND)

    • Description: You learn about Python, in particular Pandas and Numpy with tabular data manipulation. Pretty easy python stuff. Then onto Rest APIs, in particular with Flask Restx (which is Flask + Swagger documentation), then an Intro to Machine learning. If you have taken 1531, you are 50% done when you first start this course.
    • Lecturer: Morty
    • Difficulty: ๐ŸŸข Easy. The only 'WAM Booster' on this list.
    • Review: Great course to take a breather in. No tutorials. Only 3 assignments and an exam. Both the assignments and exam have some written components (so a bit of theory) and coding components. Course also really strengthend my Python skills.
  • ๐Ÿ˜๏ธ COMP9323 - Software as a Service Project

    • Description: Basically COMP3900, but with a smaller cohort that mixes postgrads with undergrads.
    • Difficulty: ๐ŸŸก Medium. Depends on your group. Don't do this, if you don't know anyone. If you want to brave it, recruit well.
    • Lecturer: Boulaem. Probably the most dysfunctional, problematic course staff, setup and structure I've experienced.
    • Review: Just get a good group, and the garbage around the course will be less of an issue. Unlike 3900, there are caps on topics (i.e. only 2 groups can choose one topic), there's no peer review (wtf) and the written reports are so hard to grasp what they want, that you might as well be submitting a random text generator, cos what you did was wrong.

Gen Ed/Other Courses

  • ๐ŸŽฎ BENV2409 - Immersive Digital Environments

    • Description: You learn about AR, VR, game design, but to the lowest extent.
    • Difficulty: ๐ŸŸข Easy
    • Review: I took it for a WAM Booster, and I highly regret it now. I got a high mark, but I didn't learn anything. It's nothing to really do with Computer Science. Sadness.
  • ๐ŸŽฅ SCIF1004 - Science and Cinema

    • Description: How science in movie films is portrayed accurately and inaccurately. You need to watch a bunch of films such as Contagion, Jurassic Park, The Martian and a few more to answer some multiple choice questions. You also have to write a few essays talking about the science in these movies and critically analyse them.
    • Difficulty: ๐ŸŸข Easy
    • Review: I took this as a general education subject over the summer during an internship because I like watching Sci-Fi movies, and I am pretty good at writing essays. You still have to do the work, but you can take it in a nice pace.
  • ๐Ÿ‘” CDEV3200 - Co-NNECTIONS Placement

    • Description: Literally a Paid Internship at a company that also counts as a course. You have to interview with Co-NNECTIONS to get the spot, but if you are successful, then why not take it? The only kind of course stuff you have to do, is you need to submit Professional Development Plans, reflective pieces, a final presentation and a final report to Moodle and your manager.
    • Difficulty: ๐ŸŸก Medium
    • Review: Really enjoying it, it's basically work and uni combined. I think it's nice to do one of these type of professional development courses or even a VIP course (https://www.challeng.unsw.edu.au/vertically-integrated-projects-0) where you work, but it counts as units of credit.

Courses I wanted to do, but didn't

  • ๐Ÿ‡ฆ๐Ÿ‡ฎ COMP3411 [Dropped] - Artificial Intelligence

    • Description: This course introduces you to all types of AI and helps you decide if you want to take further AI related courses such as Neural Networks, Machine Learning, Knowledge & Reasoning, etc.
    • Difficulty: ๐ŸŸก Medium
    • Review: I hate Prolog with a passion. I wish it was all Python. The content is too dry, similar to networks, there is a LOT and there isn't much accompanying practical components where you get to code.
  • ๐Ÿ“ฑ COMP4511 - UI Design/Mobile App Design

    • Description: A continuation of COMP3511 HCI, but you have a focus on Mobile App design. You get to learn React Native to build mobile applications, which I really wanted to learn.
  • ๐Ÿ“ฆ COMP9322 - Software Service Design

    • Description: Web APIs, Containers, Docker, Chat Bots, Graph Data. I wanted to take this course, because the content seems useful and interesting. The course structure was apparently garbage, but if you can get over that, still seems like a fun course. Kind of like COMP9321 part 2 I guess.

Courses I recommend, but didn't want to do

  • ๐Ÿ–ฅ๏ธ COMP3231 - Operating Systems

    • Description: So I didn't pick OS because I couldn't fit it in my plan as I knew it's kind of a time drain. The assignment is in pairs so if you do it, find a good partner. Everyone of my friends who has done it, has raved about it, saying, "it's just such a useful course and I feel like a much better programmer for having done it". Traditionally a hard course, but rewarding.
  • ๐ŸฅŠ COMP4128 - Programming Challenges

    • Description: First off, be good at Data Structures & Algos, Algorithms and C++. You need all that to go through the fiery hellish pits of programming challenges. The smartest people I know have taken it and got through it. It's very hard. BUT, I reckon if you can survive this, then you'll be able to ace any technical interview you have in your life. Too hard for me, but if you destroy COMP3121/COMP3821, give this a go.
  • ๐Ÿ’ฑ COMP6451 & COMP6452 - Crypto and Blockchain

    • Description: Not sure if I recommend these, moreso I was just always curious about crypto and blockchain, and actually learning what they are. I still don't know anything about them, but to learn it at uni? Might be good, might be bad, dunno.

About

An overview of UNSW Computer Science courses

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published