Course Description
CS 247: Software Engineering Principles
Systematic methods for designing, coding, testing, and documenting medium-sized programs. Major topics include abstraction, modularity, software modeling, object-oriented programming and design, generic programming, testing and debugging.
Student Course Perceptions
Explanations of course concepts: 93%
Creating a supportive learning environment: 93%
Stimulating student interest: 88%
Overall instructor effectiveness: 91%
My Thoughts
This term was a challenging one. Minus the anomalous CS136L lab I taught, this is the lowest instructor effectiveness I’ve had for any section I’ve taught so far.
There was an inauspicious start to the term: namely, that I had no intention to teach whatsoever this summer. After teaching in the first four terms of my Master’s, and finishing my thesis/attending conferences in the fifth term, I was getting pretty tired. I planned to just work as a research assistant for my Master’s supervisor before I started my PhD in the Fall. But, things didn’t work out with the sessional the school originally hired, and as a result I acquired the contract a week before classes were set to begin.
I’ve started to feel pretty burnt out. Teaching itself is still a passion of mine, but it’s difficult to fully enjoy it when my priority needs to be research. In the past 2 years I’ve had a teaching load that is as high as other full-time lecturers while also completing my thesis and getting paid a fraction as much. This is the reality of the situation in academia - one doesn’t just become a full-time lecturer without first acquiring research experience, but in the meantime I need to strike a balance that’s easier on myself.
With regards to the course offering: I had barely any students in my office hours this term, which I found very disappointing. It was especially disheartening after I moved my office hours to another time slot to ensure there were no conflicts in the students’ schedules. As much as I enjoy lecturing, one of my favourite parts of the job is connecting with students one-on-one in office hours and helping them dive deeper into the course concepts, which I didn’t get to experience much of this term.
The student reviews this term mention the disorganization of the uploaded notes, and my handwriting. Maybe I need to clarify more explicitly that for this course, students are expected to attend lecture and take their own notes, and that my uploaded notes should be used solely as a refersher instead of as a main study resource. This is clear if all notes are written on the board as in CS246, but maybe for this course it would be better for me to lay out expectations.
The other major complaints are with regards to the course content. It is true, as some students have mentioned, that I am not as passionate about teaching design patterns as I am about teaching programming languages content. Some students mentioned portions of the course content as being uninspired and unmotivated; it would be nice to know whether these students attended lectures or not. Since the notes are just meant to be used in a supplementary fashion, I rarely bothered writing motivation down on the board, and instead just opted to speak it out loud in lecture. Furthermore, some students stated that the course felt like review from one of their earlier courses, CS138.
Teaching this course for the SE cohort is difficult. CS138, which is this course’s spiritual predecessor, teaches a number of disparate C++ topics at varying levels of depth. Unlike CS246 where there is the guiding narrative of introducing OOP for the first time, in CS247, one has to decide which topics are worth covering at a higher level of detail. For example, CS138 covers copy constructors, copy assignment operators, and destructors, but not move constructors/move assignment operators. CS138 covers the use of iterators, but not how to build them. Getting to these topics so that they can be expanded upon does require some amount of review, which is unfortunate, but necessary. There is a wide breadth of student abilities in SE: some students are competent C++ programmers, whereas others may have forgotten or never fully grasped the content in their prior C++ courses. Pair the breadth of abilities with the fact that they take CS247 a year after finshing CS138, and it results in a difficult group to teach to. But, if the pre-midterm content is all unnecessary CS138 review, then I would expect a higher midterm average rather than the 70% I’ve seen in my two offerings of CS247. And, there are some student reviews which prefer the pre-midterm content, and think that the pacing of the lecture material is slightly too fast. In fact, in my last offering of CS247, there were complaints on Piazza that the first lecture was paced too quickly when essentially all I did was introduce a Rational class to represent fractions. Teaching CS247 really forces me to confront the idea that one can’t please everybody.
I leave this term wishing I could have tried a little harder for my students. I left some of my lectures knowing I could have done a better job with more preparation, but with my increased focus on research I did not have the time or energy to prepare more. I think ultimately I did the best I could with the energy I could muster, but I nevertheless am saddened. I got the acute feeling this term that this batch of students were not enjoying the course as much as in previous terms I have taught.
I am going to take a break from teaching for the next while as I start my PhD, and I’m hoping that will allow me to return to the next class I teach with an increased vigour, energy, and performance.
profQUOTES
As quoted in mathNEWS.
Volume 155, Issue 1, May 17th, 2024
- “Most languages err on the side of safety… C++ errs on the side of C.”
- “Sorry Brad (Lushman) I am flexing on you right now — he doesn’t need to know, nobody tell him.”
- “I gave Brad this code just so I could come in and be like, “Pfft, we can do better.””
- “So none of this actually works. If you’re wondering why, I literally got hired to teach this course last Thursday.”
- “Everyone loves friends! Friends make us happy.”
- “[Class claps at the end of lecture] You guys know you’re only supposed to do that at the end of term right? You do that every class? Why??”
- “[Class claps again at the end of lecture] You guys are so weird. Just wanna re-iterate that. Nobody else does this.”
Volume 155, Issue 2, May 31st, 2024
- “Hello everyone! [Class keeps talking] What do I have to do to get people’s attention…? Should I — should I just start writing? [Class keeps talking]”
- “By the end of this class, you’ll be tired of me writing code that should work, but then me going: “Hahahaha! It doesn’t.””
- “You come to me and you say “I don’t go to the University of To-ron-toe, I wouldn’t write n = n.”
- “If you’re in CS 246 you get this cow when you log in, and I always thought it was stupid, but last time I was teaching I got Piazza posts saying: “HOW DO I GET THE COW?” So if you want to know just ask on Piazza.”
- “You’re not actually in control of your life, it’s the compiler.”
Volume 155, Issue 3, June 14th, 2024
- “Sorry, I am python mode-ing.”
- “[Compilation takes over 5 minutes] Believe it or not, this is “minimal compilation.””
- “Surely controller cannot be included in too many files… huh, controller was included in lots of files.”
- “Maybe my Software Engineering isn’t the best here.”
- Do any of you guys read mathNEWS? I saw someone made fun of the way I say “to-ron-to.” I’ll just say that again: [in bad Canadian accent] Oh no yeah bud, I go to the university of Toronno."
- “Not many accents I can do without getting into trouble.”
- “You may ask me “Ross—”, ok I won’t do another Canadian accent to bug you.”
- “Who thinks it’ll be this? OK, lots of people… don’t want to participate because it’s a Thursday morning.”
- “A student has never destroyed the university, but the university has destroyed many students.”
Volume 155, Issue 4, June 28th, 2024
- “And this is a fun game you can play at 3 AM: Which one of these leaks memory?”
- “I had this Linear Algebra professor in undergrad. And in Lin. Alg. there are lots of n by m matrices. He used to call them “Nancy by Mike” matrices, till one day he got confused and started saying “Mancy by Nike.””
- “Who’d have known you worked so hard in high school to get into one of the best engineering universities in Canada, only for me to get up here and tell you a square’s a shape.”
- “This one’s trickier: it’s more of 5th grade information.”
- “[Class begins clapping at the end of lecture] I still haven’t gotten used to the clapping to be honest.”
- “And another textbook, “Coding for Babies” by a Laurier prof — consisting of 50 pages since that’s all they can read over there — in a baby language… Python.”
- “My whole thesis is in Python.”
- “So now we have my amazing book! — and the Laurier one.”
- “Oh no, now I have written a book in Python! Disgusting, right?”
- “They always give you the slow thing, rather than the thing you want.”
- “Prof: I am not sure if this is true, but did you guys stop clapping for your Math 239 professor? Student: It’s because there are 😩math students😩 in that class. Prof: ‘Cause I heard from her that you clap twice as loud for me now and that you don’t clap for her."
- “I wrote “Idiot-proof everything,”” but then scratched it out ‘cause I was worried it would be a rude word… Then I wrote UofT underneath it."
- “[Class claps at the end of class] It feels a bit arbitrary. Like why after lecture? Why not every time I pause? [Class claps] Aaand your assignment deadline is tomorrow. [Class claps] I could become a politician, that feels good. [Class claps]”
- “Prof: I was born in 1999! Student: Wait, does that mean you were conscious for 9 / 11?”
- “I always figured if this whole computer science thing didn’t work out, I’d join the circus”
- “And of course, everyone knows you can’t catch something if you throw two things at once… [begins juggling]”
- “See what you miss if you don’t come to class?”
Volume 155, Issue 5, July 12th, 2024
- “[Class spontaneously bursts in applause at end of lecture] So you guys don’t hate me too much after the midterm… Is that right?”
- “…Else you end up with none pizza with left beef. [Pulls up a Wikipedia article.] Have you seen this? I thought the Wikipedia article for this was a bit dramatic: “I think of John 3:16 the same way I think of none pizza with left beef.””
- “Student: Can I add left beef as an option? Prof: Yeah, just pass it to the constructor.”
- “… And four cheeses, which isn’t good for me since I am lactose intolerant…”
- “I think this example was made in the 2000s by some CS 246 instructor, now the prices of food have increased drastically.”
- “Another example was where they’d calculate student fees. For one course it’d return $600, that’s definitely not true anymore.”
- “Back when this course was taught by real professors, and not me…”
Volume 155, Issue 6, July 26th, 2024
- “As the fourth-grade propagandist teachers tell you…”
- “If you have ever been to the fourth grade: they lie to you. Fourth-grade teachers lie to you! They tell you a square is a type of rectangle. And I’m going to tell you this is fake news, deepfake, AI, false.”
- “And this is the part where most profs say, “Don’t critique me, I am not an artist!” but I am pretty good, so here’s my turtle head: void drawHead() { 🙂; }. Don’t forget the semicolon, else it’s not valid C++.”