CS371p Spring 2020: Ian Thorne (Final Post)

Ian Thorne
5 min readMay 11, 2020

What did you like the least about the class?

I pretty thoroughly enjoyed this class, actually. I can’t really think of any glaring problems I had with it. If anything, I thought that our acceptance tests being due at the same time as the projects themselves was a little frustrating, considering merge requests could take a few hours to be checked. Especially considering that CI pipelines could fail and cost points in that regard to. But to you, future CS371p student: this shouldn’t be a problem! If you start the assignments earlier than me, you won’t have any problems making sure everything is submitted by the deadline.

What did you like the most about the class?

There were two things I really enjoyed about this class, so I’ll just list both. First, I thought the lectures for this class were amazing. The cold-calling system (which I’ll talk more about below) helped make the class feel more like a collaborative conversation than a lecture. Dr. Downing also does a great job of explaining the material in a clear way, and he’s patient enough to go back over it if you didn’t understand something. I was surprised that the quality of the lectures didn’t go down at all when the class went fully virtual, he really does do a good job in class. Second, I really liked that this class tries to instill proper software development techniques in the students. Most classes I’ve taken in college haven’t really made an effort to teach me about tools and practices that will actually be useful in the industry. This class taught me how to use Git, GitLab, and a handful of other tools I’d never even heard of. Between those tools and the content of the paper’s you’ll be reading every week, I think you’ll come away with more practical knowledge than you’d expect.

What’s the most significant thing you’ve learned?

The value of UNIT TESTING. That was easily the most significant thing I’ve learned in this class. Having a set of tests that make sure small, manageable pieces of my code work properly proved to be invaluable — not only when initially writing the solutions for the projects, but when tracking down bugs too. Knowing what part of my implementation was failing made it much easier to fix. It was also pretty magical how even if I wasn’t quite sure how to go about writing some code, having a unit tests that ensured the proper behavior occurred made it much easier to write the code that performs that behavior. I think I definitely wrote more unit tests than were expected, but in the long run, they saved me a lot of time and ended up making my code a lot cleaner. Also, future student: you’re probably going to think “I’ll just get it write the first time and write the unit tests later. I want to get the project working before I worry about something like testing.” I did too. I was wrong. Don’t do that.

How many hours a week did you spend coding/debugging/testing for this class?

Way less than I expected to honestly. I was in 18 hours this semester, but I honestly felt like it was manageable, and I’m someone who procrastinates. Like a lot. During the weeks we had assignments due, I would say I probably spend somewhere in the range of 10–12 hours coding, debugging, and testing the assignments. Outside of a stray Hackerrank exercise though, I didn’t really spend any time during the other weeks.

How many hours a week did you spend reading/studying for this class?

During weeks where we didn’t have a test, I really only spent about an hour reading the paper for that week and making sure I had a solid handle on what it was explaining. When we had tests, though, I would say I probably spent somewhere between 5 and 8 hours studying, but I’m definitely someone who over-studies. Don’t worry if you’ve heard that the tests are hard, as long as you pay attention in class, do the Hackerrank exercises, and a have a pretty good handle on what’s going on, this class’s tests won’t be that bad. It seems like Dr. Downing has also been working to make them easier, so you’ve got that going for you.

How many lines of code do you think you wrote?

Including all of the projects, I would say I probably wrote somewhere in the realm of 4,000 lines of code. Bear in mind, however, that a lot of that was comments and blank lines. If we’re talking real code, probably closer to 2,000, and I wrote a lot of unit tests (which you should too!). The projects in this class really aren’t that bad. The first one will be a little rough as you get used to everything Dr. Downing expects from you, but once you get into a rhythm it’s honestly really manageable.

What required tool did you not know and now find very useful?

Google Test for sure. I’d never heard of it, but it allows you to set up tests in a way that they appear clearly in the terminal output saying what tests passed, which ones failed, and why they failed. It was invaluable when working on the projects and something I’m definitely going to look into for other classes and my own projects in the future.

How did you feel about the two-stage quizzes and tests?

I liked them. It was nice to have the opportunity to collaborate with classmates and it made them feel much more forgiving, because if you had an off day for one of them, the other could always pull your grade back up. The group tests are also really easy to get a good grade on, so again, if you’re worried about the tests, don’t be.

How did you feel about cold-calling, in the end?

I actually really liked the cold-calling. It contributed to the conversational tone of the class and really made me feel welcome and involved, even when I wasn’t necessarily the one being called on. Even if you don’t understand what’s going on Dr. Downing is super patient and he’ll give tons of hints to help you get through whatever he asked you.

--

--

Ian Thorne
0 Followers

Senior in Computer Science at the University of Texas at Austin