Week 3

3 minute read

These are some strictly optional materials that are related but not exactly within the syllabus. Attempt these in your free time to challenge yourself and organize your knowledge into actionable wisdom.

Supplementary materials

I’ve classified materials by topic and included a brief about the goal of said material.

W1.1 OOP: Classes & Objects

You’ve learnt about the paradigm. Now it’s time to apply your interpretation to a real-world scenario. What happens when theory meets practice?

Article analysis

Read the following article by Yegor Bugayenko: OOP Alternative to Utility Classes

Consider the following questions:

  1. What is the main argument that Yegor is making?
  2. Compare utility classes against the OOP alternative:
    1. List the pros and cons of both methods.
    2. From the code that you’ve interacted with thus far, which method have you seen more often? Why?
  3. Based on your current understanding of OOP, which solution fits the paradigm more?

Revisit this question later on when you learn more about OOP and your opinion might change drastically!

Motivation

As the field of software engineering is getting more saturated, people are taking every opportunity possible to stand out. One of the more popular methods is to build a personal brand by demonstrating your knowledge. For better or for worse, there is no shortage of opinions floating around on the Internet and it’s crucial that you are able to sift through the muck for the gems.

By critically analyzing articles, you will learn alternative ways to structure your solution and rigorously defend your choice. This will come in useful when you have to analyze your own code and present the alternatives you’ve considered later on in the module.

W2.X RCS

Learning all of git in a short time is a hard ask. You might find Pro Git a useful reference for all things git. I strongly recommend reading the chapters 1~3, 6~7.

git vs GitHub

Learn the value that GitHub adds to the git-based workflow. For each feature in the table below, mark the tool that provides that feature.

Feature git GitHub
tracking files X  
branching    
forking    
pull requests    
issues    
remote repositories    

git before GitHub

Read about the history of git as a tool. Describe an alternative way of working with git without GitHub.

git commit messages

There are some industry standards, read about them in this post: Anatomy of a git commit

Motivation

  1. The teaching of git is often tied to GitHub. This can lead to a fair bit of confusion amongst new users when they run into problems.

  2. git is a tool with significant baggage, learning about how the tool came to be will contextualize some of its idiosyncrasies.

W3.3 Java

Motivation

I get it, Java is simply not exciting for most people. The verbosity of the language aside, abuse of OOP principles have lead to unreadable code bases. Pro-Java arguments usually boil down to job availability.

Become a Java apologist

Since you’re going to have to live with Java for this semester, convince yourself that it’s worthwhile to invest time into the Java ecosystem!

Java as a language

There has been major breaking changes in Java 11. Learn and introduce some of these changes to your teammates!

//Repeat after me!
var apbf = AbstractProxyBeanParserContextVistorFactory();

Java as a platform

The JVM has more to offer than just plain Java. Learn about some of the languages that target the JVM:

  • Scala
  • Kotlin
  • Clojure

Answer the following:

  • What are the advantages of targeting the JVM?
  • What are the advantages that these language offer over vanilla Java?
  • What does code in these languages look like?