My take on the cs electives Iβve taken. Loosely based on this: http://shinexwang.com/cs-electives-review/
Difficulty π π π π π /5
Interesting π‘ π‘ π‘ π‘ π‘ /5
Usefulness π¨ π¨ π¨ π¨ π¨ /5
These are my opinions on the courses
You want courses that are:
Easy: 456, 349
Interesting: 488, 444, co487, 458
Useful: 343, 456, 458
Difficulty π π π π
Interesting π‘ π‘ π‘ π‘
Usefulness π¨ π¨ π¨
Concurrency is important both practically in the workplace and conceptually for lots of systems. The course is a lot of work and goes through a fair amount of OS-style concurrency concepts. The usefulness takes a hit since it is in uC++, which is specific for this course. The prof (Peter Buhr) is good, and lectures are entertaining. I liked the course despite hating CS350.
Difficulty π
Interesting π‘ π‘ π‘
Usefulness π¨ π¨ π¨ π¨
Contrary to popular opinion I liked this course a lot. I didnβt have the best professor for it (Jeff Avery is the best prof so Iβve heard) but I still enjoyed the assignments, workload, and overall structure of the course. There are dry parts when talking about history, random UI facts, etc. but it is just memorization for the midterma and final. You create little Java programs and my last assignment was a Android app. I liked coding the assignments and they were easy to get high marks.
Difficulty π π π π
Interesting π‘ π‘
Usefulness π¨
This one gets a bad reputation from me because it is mathy. It was a prereq for graphics (cs488), so I took it. It covers stuff in Matlab (and in now allow Python as well). I didnβt like solving ODEs, Matlab, Splines, or Matlab. (I hate Matlab enough to include it twice). Jeff Orchard made this course bearable for me. Heβs good. If you donβt like mathy cs courses stay away.
Difficulty π π π
Interesting π‘ π‘ π‘ π‘
Usefulness π¨ π¨ π¨
Distributed is an interesting course in theory. Then you see A1 and A4 are just writeups about concepts taught in class/textbook. A2 and A3 are implementing a distributed file system in C++, and are coding. They arenβt bad, and are organized fairly well. If you liked CS350 OS assignments these were similar with syscalls, etc. Not as much concurrency here, just operating-system level coding.
Difficulty π π
Interesting π‘ π‘ π‘
Usefulness π¨ π¨ π¨
Computer networks are pretty important considering that is a lot of the knowledge of how the internet works. That being said the material is pretty dry and I canβt see people asking you how lookup tables get propagated in a network of routers in real life, etc. Still pretty birdy for a cs elective.
Difficulty π π π π π
Interesting π‘ π‘ π‘ π‘ π‘
Usefulness π¨ π¨
The name is true. It is an introduction. User Interfaces was a 100 level when comparing it to 488. 488 doesnβt hold back on any punches and is very mathy, challenging, but rewarding. This course will chew you up if you donβt dedicate the time it deserves. This gets a low usefulness score because you are working at the low level editing OpenGL buffers in C++, and I donβt think many people go into game development, much less work with OpenGL at the low level compared to using a game engine.
Difficulty π π π π
Interesting π‘ π‘ π‘ π‘ π‘
Usefulness π¨ π¨ π¨
This course is a breadth course covering applications of crytography in multiple facets from RSA, ciphers, hash functions, secrecy, proving secrecy, elliptical curves. Alfred Menezes is a good prof too. I liked the concepts, the assignments were a bit time consuming, but it lacks usefulness. There are some overlaps in security, but I donβt see you trying to break ciphers. (Or maybe you do, I dunno what job you do)
Seems good, but it is a big 3 with a group project to build a compiler. If you didnβt like cs241 there is no reason you should take this, since it is just more of that.
Seems good as well. Has a breadth of security topics and has minimal overlap with CO487. Doesnβt seem too hard or challenging except maybe A1.
Even though Iβve taken a lot of upper year cs courses, I havenβt taken a lot of them. Here are some I would still check out
Even though I havenβt taken these courses and I know very minimal information about these courses, I think these are bird courses for cs electives.
If you really want βeasyβ courses:
I havenβt taken them, so Iβm not 100% sure they are birdy, but based on the description they seem that way.