Skip to content

clemenkok/IAC0

Repository files navigation

IAC0: A Repository to plug the missing gaps

There are several important skills that are needed to succeed in second year. This repository contains several tutorials on how to pick them up. It is recommended that you spend some time learning the basics below as the year goes by. Some are relevant for the IAC lab (Linux, Git), so check them out before the first lab.

Feel free to create a pull request.

Progress

General Advice

  • Start your internship hunt early (like right now). Use a popular CV template such as Jake's CV Template.

  • Learn some LaTeX - will come in handy for report writing, as many will have realised in the first year project.

  • On Algorithmic Exercises which may be tested as part of job interviews (i.e. Leetcode): learn the big picture first (what are the patterns - see here, what are the data structures you need - queue, linked list, stack, hash map, array, and many more, what are the algorithms you need - DFS, BFS, sorts and many more) and then use a programming language of choice to implement and tackle these problems. C++ may not be available on every assessment site while Python should be available on all of them (not to mention easier to code out - think about how'd you implement a dictionary and a hash map in C++). That said, C++ is mandatory for certain job roles which require high-performance, so if you are targeting those roles do brush up on C++ as well as C++ internals (standard library, memory management). Do Neetcode 150. Computational Thinking takes time, and is something that you can't brute force overnight. But, more practice certainly helps.

  • The one thing that you will need to pick up yourself before some 3rd year Modules at the DoC would be Operating Systems. Some basic concepts (virtual memories and page tables) are covered in IAC, but you will need to read the rest yourself (scheduling, more in-depth virtualisation and file systems). The notes over here are quite useful; there's also the famous Operating Systems: Three Easy Pieces. Some modules might also assume a functional programming background (langauges like Haskell, OCaml and F#).

Refer to the table below to find out what languages / frameworks you will need to learn:

Modules Technologies
ELEC50006 Discrete Mathematics Python
ELEC50011 Mathematics for Engineers IIA/B NIL (Math)
ELEC50014 Software Systems Python, SQL
ELEC50002 Communications LabView
ELEC50004 Control Systems MATLAB
ELEC50003 2nd Year Project Depends on your subsystem. Command - React, Node.js, AWS, Control - MATLAB, Drive - C++, Vision - FPGA/C++, Power - C++, Integration - RTOS.
ELEC50009 Information Processing Depends on your subsystem. If you're doing the FPGA part, you need to know how to use Quartus, C, SystemVerilog and UART (so Python). If you're doing a game, probably Unity/C# (some people used common webdev stacks too). Cloud/Databases - AWS, SQL, Python.
ELEC50010 Instruction Architectures and Compilers Autumn part - SystemVerilog, C++. Spring part - C++, Flex, Bison (brush up on OOP)

Contributor Appreciation

Thanks to the following people for contributing to this repository:

  • Clemen Kok (MEng'25)
  • Hrishikesh Venkatesh (MEng'26)
  • Aranya Gupta (MEng'25)

Feel free to submit a PR!

About

The Missing Gaps

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published