Final Entry

Jarod C Norwood
3 min readDec 7, 2020

--

Course summary

Unlike some of the more notorious large-project courses in our department, I found Software Engineering to focus less on the deliverable and more on the process, which was a nice change of pace. I think that the core ideas of the course are valuable for anyone looking to grow as a programmer and team member holistically, rather than just adding a few words to the skills section on your resume.

Long-term takeaways from this class:

  • test first, test during, test after, test, test, test
  • when designing algorithms, demand the weakest capabilities (e.g. iterable vs. indexable)
  • when designing containers, provide the strongest capabilities (e.g. indexable vs iterable)
  • build decorators on top of containers, iterators, and functions
  • utilize the benefits of being lazy (i.e. yield)
  • always look for reuse and symmetry in your code
  • collaboration is essential to the quality of your code and to your well-being in producing it

How well do you think the course conveyed those takeaways?

I think that the course was ambitious in offering many, professionally and personally useful, ways of programming. The papers and some of the course material definitely worked to convey these valuable ways of viewing our code and role as software developers. On the other hand, I felt that many lectures felt inconsistent in their usefulness and focus. Perhaps it was due to the online format, but the lectures varied from information-packed to something which could be covered with a quick google search with no real rhyme nor reason.

Where there any other particular takeaways?

I think a big takeaway from the project was the value of a developed and functional pipeline and other codebase infrastructure to make our lives as developers easier (after the initial investment).

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

The format for quizzes and tests was nice since I believe there was a total of maybe three quiz questions and no test questions where I did not know the answer by the time I turned in the second attempt. Perhaps I was incredibly lucky with my group and my own knowledge, but I believe that the two stages allowed me to learn with my peers and gain more from the quizzes and tests.

How did you feel about cold calling?

The effectiveness of the cold calling varied significantly based on the topic. I think it was useful for topics such as regular expressions, where it allowed Dr. Downing to get a better benchmark for our understanding. On some topics, especially the straightforward python days, it felt that the cold calls only slowed down the lecture and didn’t really require extra engagement or increase understanding.

How did you feel about office hours?

I attended only two office hour sessions with TAs for the project and was not particularly impressed. I mainly got rehashes of piazza answers or mini-lectures tangential to my questions. My opinion is, however, very limited due to not attending many of these sessions.

How did you feel about lab sessions?

I did not attend any lab sessions, so I cannot comment on their value in any way. Perhaps my only insight is that they are not strictly necessary to be successful on the large project.

Suggestions for improving the course?

Overall I felt that the Python segment of the course was bloated and slow compared to the rapid-fire regular expressions, SQL, and refactoring. I also think that the SQL would have been more helpful if it were taught earlier, before our backends were largely functional.

--

--

Jarod C Norwood
Jarod C Norwood

No responses yet