CS2113/T - Software Engineering & Object Oriented Programming Review

CS2113/T

NUSMods Link

Taken in: AY22/23 Semester 2
Lecturer: Akshay Narayan
Tutor: Student TA

Schedule:
  • 2h Lecture
  • 1h Lab
Grading:
  • 5% - Participation
  • 20% - Individual Project (Week 1-8)
    • 10% Implementation
    • 5% Documentation
    • 5% Project Management
  • 45% - Team Project (Wk 6-13)
    • 5% Design
    • 10% Implementation
    • 10% Documentation
    • 10% Quality Assurance
    • 10% Project Management
  • 30% - Final Exam

CS2113 is a software engineering module for students in CEG and certain other tracks. The T variant, to my knowledge, is the exact same module, but for students who have to take another accompanying module. The major learning objective of this module is software engineering, a.k.a. the aspects of working with people to produce a cohesive product. There is an emphasis on communication and teamwork, and you will learn how to communicate your software's implementation through Unified Modeling Language (UML), quite some documentation writing, and learn to use Git/GitHub to work on your projects.

Unlike CS2103, this module doesn't require CS2030 as a prerequisite. You will learn a bit of object-oriented programming and some learning objectives set out in CS2030, but nowhere as rigorous as CS2030. You definitely won't need to do any effect-free programming in CS2113, but you'll still need to encapsulate SOLID principles and other OOP concepts.

My friend took CS2103 this semester, so I had some comparison between her module's work. I found the workload/exam to be considerably lighter for CS2113. The main concern is really working in a team for the team project, which doesn't take much time but can't be taken lightly either. Mine was a little poorly managed, and our end product was bug-ridden. Your mileage may vary, but take this with friends if you can to prevent this. You form your own teams.

Between this and CS2103, both modules teach you more or less the same content in terms of Git/UML. CS2103 is faster-paced and possibly more difficult (CS) cohort, so those are points of consideration. However, CS2113 cannot be used to fulfil CS 2nd major. I am taking CS Minor, so I can fulfil requirements just fine.

Check out the module's website here. It will probably have a link to the next AY's content, but it's more or less the same. All textbook content is here if you want to do pre-reading.


Detailed Breakdown

Projects

Individual Project (iP)

This project will warm you up to create a chatbot over the first half of the module. Through this, you'll learn how to better use GitHub, Sourcetree, Java, and IntelliJ IDE, which are recommended for this module's projects. To get full marks for this component, simply do all the compulsory milestones (the bare minimum).

I suggest you put aside some time a week to work on this consistently. It's not something you should rush, and you should hit your weekly deadlines. Each milestone doesn't take long. In comparison to CS2103, this is easier; in CS2103, you need to do more (actually implement a GUI instead of command-line), and the milestones are earlier too. You'll find detailed information on the CS2113 website, including weekly milestones.

Team Project (tP)

The focus of this module revolves around the tP, which simulates a software engineer's working environment, where you'll meet all sorts of people. With any luck, you'll find yourself grouped up with hypercarries, but just as likely you'll have to pull some weight yourself if unlucky.

I'm not going to complain too much about my group, but in short, teammates left much to be desired (with one exchanger disappearing and contributing 0 LOC). For CS2113, the project is again a command-line text-based program not unlike your iP, so you can copy refactor some code from there.

Only thing I can say is, the direction your project can take depends on your teammates. The table/group next to me had a hypercarry who's on Kattis leaderboards. Had I sat that table I wonder how different life could've been? Anyway, you play the cards you're dealt but if you take with reliable friends, that's better. For more info, you can check out the module website as it's very descriptive there.

Lecture and Tutorial

The lecture follows the textbook, so even if you miss it, you can check the weekly topics and catch up from there. It's quite a bit of content that you don't want to miss out on, so stay consistent.

Tutorials are sometimes to test on lecture contents (usually UML) and to check in on the projects. That means the soft deadline for project milestones are before tutorial, so you can take that into consideration when selecting a tutorial timeslot.

Assessments

Practical Exam

Despite the name, it's not the kind of PE that you're used to. This was probably the most sian part of the module. I also didn't quite see this in the module overview (although it's there, if you look for it). Anyway, this is meant to be a bug-test phase for your team project, and it happens on week 13 lecture after the project is submitted.

Why I found it so frustrating was because there were so many phases. To summarise: You have to spend a total of 2 hours debugging other groups' projects and finding fault in their documentation. The more plausible bugs you find, the better for you and worse for them. Then following this comes the developer response phase a few days later, where you can accept/reject bug reports and assign a severity and arrow the teammate(s) responsible. AFTER THAT, the bug-finders once again respond to the rating and acceptance and can fight again. If both parties cannot come to an agreement, teaching staff can step in.

Final Exam

The final exam was refreshingly simple. The prof will prep you for the exam questions during tutorial, along with mark breakdown, as there's a lot of content on UML. I can't quite remember the other questions, but there should be some about code and software engineering concepts, from documentation to git. You shouldn't need to worry too much about this component if you pay attention and study. It's open book too. I had a flight after my exam on the same day so I finished with about 1 hour to spare and went back to pack. I wasn't the only one who finished early either.

Final Note

If things go well, I'll TA this module next semester. See how!

Expected grade: B+

Actual grade: A-

Reviewed by: ZH

Comments

Popular posts from this blog

LAK1201 - Korean 1 Review

GES1041 - Everyday Ethics in Singapore Review