Week 3
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:
- What is the main argument that Yegor is making?
- Compare utility classes against the OOP alternative:
- List the pros and cons of both methods.
- From the code that you’ve interacted with thus far, which method have you seen more often? Why?
- 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
-
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. -
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?