I have taken two embedded systems courses, and am now in compilers and networking. Despite having my passion in human-computer interactions (HCI), I have taken predominately systems courses for my capstone work (the exception being A.I.). I suppose that’s because I also like ubiquitous computing, the movement towards embedding technology into the world until it becomes invisible.
Compilers seems useful, but we’re still reviewing context-free grammars, parse trees, etc. from the computing basics. We will be making a compiler for MiniJava. This basically takes a subset of the Java language and produces MIPS, an assembly language.
Compilers are very involved productions. One needs to know what kind of hardware it is compiled on, what the specification is for the language, etc. I’m not taking it to spit out compilers (there’s compiler compilers for that). It’s better for enforcing appropriate testing and debugging. (I admit to doing a ludicrous all/several test cases after writing my programs. The appropriate method is to do unit/module testing throughout creation.)
Networking focuses on how the Internet works: how data gets from one machine to another and protocols for different types of data. I’m taking it more for interest in mobile devices. I don’t know if I’ll get a full answer to these, but it is best to know why I’m doing something:
- How do cellphones, laptops, etc. protect data when it is on a wireless network? (Someone else can grab the bits I send from out of the air.)
- What types of machines make up the Internet? What is the ratio between embedded systems and standard computers?
- With the imminent death of the Internet, what comes next? (We’re running out of IPv4 addresses, and IPv6 adoption has been quite unsuccessful. The only viable solution if this trend continues is the creation of “gated communities.”)
And then there is software engineering. Many students, including myself, put off this course until their last semester. This is because of reports of how not useful the course is and that it is taught backwards from the actual process (testing is done first, while design and specification is taught last).
My first assignment is read either a 30 or 50 page paper on software disasters and report on it in 2-3 single spaced paper. More distressing is that the course is packed with students; this is not helping my anxiety.
All three courses involve group work. So, that’s a definite shift from my previous coursework and I don’t know what to expect.
… As an aside, for anyone that does a Powerpoint presentation, please don’t use a white background. It visibly color shifts and flashes on a projector. (It’s bad enough for my migraines to be around florescent lights; I don’t need the screen I’m reading to blink, too.)
[...] this semester I’m going to have quite a workload. All my courses have a high reading amount. Two require homework and/or a programming assignment each [...]