During my 4A term at the University of Waterloo, a set of events that I don’t fully understand myself resulted in me becoming the yearbook editor for the Computer Engineering 2009 (8-stream) class. When I was putting together our pages, I stumbled across Wordle – a web application for generating word clouds – and thought that I could use it to sum up Computer Engineering at UW graphically.
For data, I used the ECE course descriptions from the UW undergraduate calendar, filtered down to only include courses taken by computer engineering students, and with the addition of the course descriptions for core non-ECE courses (e.g. those offered through math or science). The result was a word cloud consisting of the top 50 words used to describe computer engineering courses at the University of Waterloo, sized by the number of occurrences in course descriptions.
For those of you with the 2009 yearbook, I encourage you to check out the result on page 169; for everyone else, a PDF link is below. Besides the words ‘computer’, ‘engineering’, and ‘ECE’, which were artistically weighted to dominate the cloud, it turns out that the terms ‘design’, ‘systems’, ‘analysis’, and ‘control’ all play a big part of a computer engineers’ academic life. Who’d have guessed?
Computer Engineering: A Graphical Overview [pdf, 538K]
ECE 150 Programming Samples
This term, I’ve been given a position as a teaching assistant for ECE 150: Introduction to Programming at the University of Waterloo. Taught in C#, ECE 150 covers most of the basic features of programming languages and how programs are written, and assumes no basic programming knowledge on the part of the students taking it. Unfortunately for me, that means most of the cool parts of C# and the .NET framework – LINQ, WPF, WCF, ASP.NET MVC, and even language features like generics, anonymous functions, and lambda expressions – are off limits. However, it also means I need to know the basics really well; one of the other TAs and I were asked today the difference between int.Parse() [used in the lecture slides] and Convert.ToInt32() [used in the textbook]; the answer, as I found out, was quite subtle (NB: for students in the course, the difference isn’t relevant – use whichever you desire).
In that spirit, I’ve decided to put together a handful of applications over the course of the term in order to demonstrate various features of the C# language for programming beginners. All of the samples will be available via my ECE 150 page, and will be updated as the term progresses. How many I get done is entirely dependent on the amount of time and number of ideas I have; those that do get made will roughly correspond to each week’s content, and we’ll use them in the final review. Full source code for each application is also available for those who want a deeper look into some of the features of C# and the .NET platform.
Check them all out at http://nicholasarmstrong.com/projects/teaching/ece150/