What I hope to learn in CS3216

August 09, 2017 by Aaron Ong

I was introduced to CS3216 by a senior of mine (Yao Hui) at Yale-NUS College. Having not taken a single course outside of Yale-NUS before, I anticipate the class with a mixture of apprehension and excitement.

Background

For some background, I major in Mathematical, Computational, and Statistical Sciences at Yale-NUS College. Yes, that is what my major is called, and while its breadth is enticing, we generally lack depth because we have to fulfill requirements across all three disciplines. Couple that with the fact that Yale-NUS Students are only required to take 10~12 modules within our major, you quickly arrive at a very diluted CS experience. Nonetheless, CS courses at Yale-NUS are generally well-taught and rigourous. Our liberal arts curriculum also trains us to think from multiple perspectives which I have found to be extremely useful when dealing with software development.

I applied to the course as a Developer/Biz Dev. Some of the relevant web development experiences I have are in:

  • Frameworks: Django (Python), Express (Node.js), Gin (Golang), JavaEE (...)
  • Frontend: Vanilla js, JQuery, React
  • Databases: MariaDB, MS Sql Server, SQLite
  • ORM: Django ORM (Python), Sequelize (Node.js), Xorm (Golang)

I also spent a summer interning in a web penetration testing team, so I guess that's relevant experience as well. Also, while I am capable of Frontend development, my design skills are horrendous so don't count on that. Yes, anyone who reads this post, please advice me on how I can make my site look better.

Why I chose CS3216

CS3216 is more than just a class to me. (cliche) But seriously though, I chose to take this class because it provides me with the opportunity to work closely with some of my brightest peers from the greater NUS community. Having not broken out of the Yale-NUS bubble before, I am looking forward to the experience. I have also heard great things of Colin and his teaching team, and I intend to make full use of my limited interactions with them.

From a more technical perspective, I am intending to learn the following:

  1. Develop business acumen: While I have attended multiple hackathons and business case competitions before, these events are often too short for me to develop a deep understanding of how the different moving parts of a business/product interplay to make the business/product successful.
  2. Design: It is my belief that good UI/UX is a strong predictive factor of a product's success. A robust system means nothing when you cannot convince people to use it.
  3. Stickiness: What makes a product sticky? How do we convince new customers to use our product? How do we keep our existing customers coming? Understanding the nebulous concept of stickiness is tricky, and I hope to concretize my knowledge of it.
  4. Choosing Technology Stack: While this is generally a lesser concern for projects that do not scale, I am hoping to learn how to make my tech stack decisions beyond the basic criterias such as familiarity, fit, library support, documentation, and popularity.
  5. Full-Stack development: While I have listed a fairly long list of web technologies that I am familiar with, my engagement with each technology is often limited to only 1~2 projects. I hope to put in lots of development hours during this course to hone my skills. If time permits, I also hope to employ CI in some of my projects.
  6. Mobile app development: I am a stranger to mobile app development and I hope to expose myself to it in this course.
  7. NoSQL: I read up on the CAP theorem a little and played with the mongo shell a little, other than that, I know little about NoSQL.

To everyone reading this, I look forward to meeting each and every one of you :D

Back to Blog