<p>Next Spring, I may be taking a couple of independent study / directed reading type courses in Computer Science / Software Engineering. If interesting graduate courses are being offered, that may be what I end up doing, but...</p>
<p>What do you guys think would make a good independent study course in computer science / software engineering? My interests are pretty broad, and my background is varied enough that I should be able to take a course at a resonable level in most CS areas. I generally gravitate towards theory and applications areas, but I don't want to rule out hardware and software possibilities, particularly because it seems this is what my school is better for.</p>
<p>So... if anybody has any ideas or anecdotes, I would love to hear them. I know a lot of you are probably thinking "do research"... and that's a great idea. I'm actually going to be doing ~20 hours of research per week for the rest of my undergraduate career, working on two separate projects. I already worked 4 semesters on another couple of projects, and even managed to get published, somehow. So, while research is definitely an option, I'm really more interested in ideas for neat, possible useful, possible resume-bolstering courses.</p>
<p>And just so you guys have a flavor for the sorts of things I will have already had, perhaps so you can suggest things to make up for any deficiencies:</p>
<p>Intro. programming (sort of a joke, a necessary evil)
Data Structures
Software Construction (sort of like an intro to software engineering)
Programming Languages
Discrete Structures / Mathematics
Algorithms
Assembly language & computer organization
Operating Systems
Software Modeling and Design (sort of an intro/intermediate software engineering thing)
Formal Languages (sort of like an intro. to theoretical cs & complexity)
Computer architecture
Computer Networks
Software Process
Software Quality Assurance
Embedded and Real Time Systems
Computer Ethics</p>
<p>A course in compilers would definitely be very interesting. I think I can swing that one, too… it seems like it would be a nice bridge from the low-level to the high-level and involve topics in programming languages, a course I actually had a perfect 100% in. The catalog actually lists a “Compiler Construction” course, but it’s rarely offered… I can talk to the people and try to have them resurrect it for next Spring, or just take it as an independent study. Thanks!!!</p>
<p>Performability… interesting! This also seems like a great suggestion. I really enjoyed my Probability and Statistics class when I took it… and seeing more of that in applications to CSSE would certainly make for an sweet class. I’ll definitely look in to this one.</p>
<p>What good suggestions! Thanks a ton for your help. More suggestions, people! Awesome.</p>
<p>I took Data Flow Analysis (it was labeled Compiler Design) for grad studies and it absolutely kicked my teeth in. Granted, I was taking the class in the CS dept. and I’m EE, so I lacked some of the abstract theory, but you shouldn’t have any problem with it. The class itself did not deal as much with the low-level hardware, but you could easily extend it to that. We focused more on optimization, trellis diagrams, dead code, constant folding, etc. The professor wrote a generic interpreter in Java, and we expanded on it during the class with writing the lexicon, tree-parser, and semantic files. </p>
<p>I’m just now learning about performability. Like you I enjoy the prob. and stats class, this is just a different spin on the topics. Still the same ideas, Poisson, Markov, etc. There are a ton of applications for this. One that my professor pointed out was the FastTrak (sp?) at Disneyland. It’s all based on this topic.</p>
<p>I know a lot of people like to do computer science & music (think intelligent composers, analyzers, etc…) (I have no idea what this is actually about as I have 0 music knowledge.)</p>