Introduction
This might be outdated with the new changes to the module as projects are removed. However the general principles of how to score will stay the same.
You can view our project Goldman Portfolio Analyzer on Github. Also check out the post: Breakdown of the Project
Module Overview
IS443 teaches you Object-Oriented (OO) fundamentals - Polymorphism, Abstraction etc, while having you work with a sponsor to build a real life application using the Spring Framework.
This is a 4xx mod, meaning it is taken by Y2-Y4s, mostly Y3/Y4s. Expect to meet peers who have been programming for 1-2 years. No design patterns are taught, but you will have to learn it yourself if you want an A/A+. Use Rafactoring Guru, it’s a great resource for learning Design Patterns.
This module took up around 10-20h per week, + more during proj season.
Component Breakdown
- Labtest (25%)
- Project (40%)
- Class Part + biweekly quiz (15%)
- Java Certification (20%)
Grade Breakdown
If you are aiming for A/A+, you will need to score well on all components. I scored well on all components.
If you are aiming for B+/A-, focus on Labtest, quiz and Java Certification. Project just do the average deliverables.
General Strategy
-
Classes should be split into 1.5h of teaching, 1.5h of doing problems (deliberate practice). Do all the problems on the practice set, even though they are not needed. Investing a bit of time will go a long way. So it is key to finish all the problems, even though it isn’t a requirement. I try to finish all the problems during class so I have 1 less thing to do outside of class.
-
Watch all your lectures before hand. During class, just start doing the problem sets.
- Harder topics are:
- Learning about the JVM and Java CLI, (how to use Javac + java command, how to compile the files to the different directories). This was really challenging and you will need some time to understand. Stackoverflow is good for this.
- Learning how to use comparators, Java Generics. These are more advanced, but will be in the labtest most of the time. Don’t run from this, and just put in the hours to learn.
- 2D arrays. This is covered towards the end. It is challenging for those who don’t do much leetcode. Try to work on the questions before class if possible.
-
This subject can be scored with Deliberate Practice. Not much memorisation is needed.
-
It is helpful to learn out-of-scope items like (1) Design Pattners, (2) Java Streams (which will be briefly mentioned).
- If faced with ambiguity during your study, just type out the code and try to run it and see the output. Place print statements around, and change some code along the way. It will help with Debugging.
Labtest Strategy
Labtest is a mix of OO + algorithms. If you do leetcode regularly, it will help in your algorithmic thinking.
Pre-labtest, do every single practice paper. The profs will release a set of about 10 past year papers. These are difficult papers, but you must do all of them. The questions that come out, will be largely similar.
The LT goes something like this:
- 25 marks
- 4/5 qns
- First 12-15 marks is a giveaway if you have done all the practice questions in class.
- Next 5 marks is difficult to get. Doing the practice papers should help you on this.
- Last 5 marks is extremely hard. You need to have very good time management. I didn’t hit this section but no on in the level did as well, so you can tell most people get 15-20 / 25.
Your goal is to score marks, not get every question correct. Browse through the paper. There will be 1/2/3 star questions. Do all 1 star first, then 2 stars, then 3 stars. Do not do the quesitons in order. If the first qns is a 3 star qns, skip it and come back later.
Keep your code clean, and try to pull out into reusable functions. It really helps in debugging, and you don’t have much time in the LT.
Limit yourself to 5-10mins of thinking per question. Come up with a basic flow of how you’re going to write the algorithm before you start coding, else you will be in a mess. If you can’t do a qns in 10-20mins, skip it first and come back later.
Project Strategy
Project involes building an app for a sponsor. Mine was for Goldman Sachs, to build a portfolio analzyer. The project judges you on:
- Code quality + if it adhers to OO. For e.g:
- Make sure your code is modularised
- Do not have a class with 1k lines. Break it up.
- Name your variables well. No “x = 5”, “y = 10”. Instead do: “public int numberOfUsersToday = 5”, “private String nameOfAnimalInZoo = “Giraffe” “. Long variable and functions names are better than short but unreadable names.
- Indent them well, use the proper linting format.
- Organise your folders and file well. Search up online on what are proper file structures for Springboot.
- Frontend and usability
- This isn’t the core and you should focus on (1) first. However, this separates the A from A+.
- Presentation
- How smooth your presentation is and the flow. You should rehearse 2-3 times as a group, and time each person. Write scripts. Finish your proj 2-3 days before deadline and work on rehearsing your presentation + demo.
There will be xx features to hit and yy extra features that are for extra points. To get A+ you must hit both xx and yy. For our group, there were 5 basic features, 5 advanced features. We built 9 features. You should use Springboot. It helps. It takes a while to understand the Spring framework, but once you get the hand of it everything is quite easy.
Use design patterns. Most groups will not, and if you do, you will have an edge. Simple patterns to consider are the (1) Facade and (2) Builder. Include this in your presentation. You don’t need many patterns, 1-3 will do.
A nice slide deck + demo goes a long way. This usually determines your presentation grade. If you can present and sell your solution well, you will score.
The final touch is to have an “A+” features. For ours, we had to retrieve stock details from an online API. We built a CRON scheduler to automate the retrieval of the API. The sponsor liked the feature. This feature didn’t need many lines of code, but it took some time.
This is what my Frontend looked like:
Class Part + Quiz Strategy
Not much class part is needed. I usually don’t care about class part. I just ask questions if needed. I look stupid most of the time asking stupid questions, but that’s ok because you’ll learn from the question you ask. There are no stupid questions. Just ask.
There are 4 quizzes. Scores are the best of 3. So try to aim for something like 9/8.5/9. This will be a good standing. For every quiz, there are about 5 practice quizzes. So we have 4 quizzes and there will be about 20-30 pracice quizzes on E-learn. Do all of them. Don’t just do them, but for the questions you don’t understand, or feel slightly iffy, just open your IDE and run the code.
For me, I did the quizzes. For those that I was unsure, even if I got them right, I would type out the code and run it. Then try to play around and get different outcomes. It helps you to understand.
The quizzes are not easy. They are tricky. So do the practice quizzes, and remember to check.
Certification Strategy
The Certification is easy to pass, but hard to score well. This is the certification you must take. To study for it, you must use deliberate practice + some memorisation. The certificate costs money, but you can claim it. You will pay first, fill up some form, and be reimbursed. Check with your prof / TA>
- OCP Study Guide is the textbook which you’ll need to study. Give yoursefl about 1-2 weeks to study finish this. Some of the topics are not covered in the exam, but it’s very good for learning. So just study this.
- Enthuware Questions are the best for practice. They cost a few dollars. But they helped immensely. Strong recommend. Questions are similar both in phrasing and difficulty.
You should be able to achieve a decent score with these 2.
Conclusion
This is a tough mod, but it’s one of the best modules to take. It is essential and I would even recommend Y2s to jump right in. In 60% of technology interviews, they test about OO concepts. If you can show strong master of OO + Java, and even knowledge of design patterns, it will go a long way.
All the best. Study hard and live life.