Skip to content

Latest commit

 

History

History
250 lines (129 loc) · 20.8 KB

File metadata and controls

250 lines (129 loc) · 20.8 KB

Advice from Seniors 🤓

Seniors - submit a pull request please!

Ali

Apply for NOC Silicon Valley to intern in a tech startup. You’ll learn loads with the right attitude. Don’t worry if you "didn't start a business" or “don't have entrepreneurship experience”. They love CS students.

Adhiraj

Computer Science is not about programming, though they go hand in hand.

Ced

Don’t be afraid

Div

You’re probably not learning as much as you should be

Wen Bin

Join CCAs, don’t just mug. CAP is not everything.

Vaarnan

Be language agnostic. Learn how to self-learn. Also, the curriculum is made for everyone to follow. Learn beyond the course.

Frank

Experiment; it’s not expensive to experiment with computers.

Laurence

Go out and meet people from industry

Jason

Be brave. Read, read and read. Read widely. Don't just read about computer science stuff.

Derek Sivers, has a very good reading list.

Learn at least a new language every year (Or learn 7 Languages in 7 Weeks).

Make sure the language messes with the way you normally think about programming. Alan Perlis once said: "A language that doesn't affect the way you think about programming, is not worth knowing"

Andrew

Make stuff to make your life easier. This works in more ways than one.

Silin

Don't be intimidated/overwhelmed if you find yourself among the really awesome programmers, especially if you're coming in without any background. do your best to keep up with the lectures, and learn to pick up skills/knowledge outside of school-taught content by doing your own reading

Yiping

Learn it the hard way. CS people are not meant to write fancy web pages to impress people from business school. Get yourself deep into the technical stuff. A sound foundation in C programming and system architecture are essential.

The teaching style in NUS (at least undergraduate courses) is easy to follow but often omits some exciting challenging stuff. Get yourself used to reading the textbooks (not the garbage ones) from cover to cover and to read research papers.

If you want to get an admiring CAP, the best way is to forget about your CAP. Choose the courses that appeals to your heart and can help you in your research.

Jesmond

Don’t be afraid to challenge yourself. Some of you may be saying to yourself "I have no background" or “The workload of the module seems daunting” but in the end you’re only preventing yourself realising your potential (just to let you know, I had never written a single line of code prior to entering uni and I’m surviving fine).

Only through the ‘hardcore’ modules do you learn skills that are practical for real-world use. Have a little confidence in yourself. University is the last place you can make mistakes without reservation before you go out into the working world.

Don’t learn what you need to know to pass exams because very quickly that knowledge may become obsolete.

Learn how to learn. In computing, it is very hard for you to be able to dig a niche for yourself and get away with it.

Technology evolves at a mind-blowing pace and the only way you can keep abreast is if you’re able to evolve with it.

Pursue what piques your interest because that’s the only way you’ll be able to keep yourself going once the going gets tough.

Learn to read the f***ing documentation. It’s the best way to learn the nuances of a language.

And last but not least, Google is your best friend =D

Shubham

  1. Ask questions. Don’t be afraid. At max, the other person will refuse to answer and never talk to you again. If the latter scenario happens, it is probably as well since he wasn’t helping you much anyway.

  2. Learn to say ‘no’. I have learnt it the very hard way that doing okay in many things and badly in a few is exponentially worse that doing well in one and only one. Don’t be overwhelmed by the many things people around you are doing. Believe and have faith in yourself.

  3. Stay fit. You shouldn’t make programming late at night an excuse for a McDonald’s meal or a coke at night. Do at least half an hour of vigorous exercise everyday. Never think you don’t have enough time to care for your body. A healthy body also allows your brain to work faster. Again, saying this from personal experience.

Richard

CS can get very political, and it's easy to get into debates where someone says you should make use of some software/programming-language/API/operating-system/convention etc. etc. rather than the one you're using, or how you should learn 20 different things when what you know is all you need to get you through the job. (And they may even be correct. ;-) ).

Ostentation will not make you a better programmer.

Ryan

Don’t just spend all your time on school work. CS is all about doing things yourself, figuring things out without much official help. Hack around whatever thing you like. Remember, the goal is learning. You can’t learn with just textbooks alone. You must learn by doing. Also, make yourself surrounded by smart people. You can learn a lot from your peers who are better than you.

GCL (aka Chun Lin/Carrot)

Read newspaper or books (not just textbooks), everyday.

Bach

Learn different kinds of programming paradigms. Learn functional programming, logic programming, stack-based programming, voodoo-oriented programming (I made the last one up)... The (computing) world is not just made of this shiny OOP thing

Joshua

It doesn’t matter what you study, as long as you keep learning. Read lots (blogs, books, papers), keep experimenting and keep practicing!

Eldric

  1. Differentiate yourself from the rest. Don’t make yourself a cog in a machine. If you do, make yourself an important one. If not you will be replaced with someone cheaper. Hint: do your own stuff outside of class

  2. Study other disciplines. Computer science is a great aid to other disciplines ⇔ you understand enough of the problem in computing terms to solve it.

  3. Pick up logic - If nothing else, make sure you don’t forget the natural deduction and first order logic you learn in CS1231 (to freshies: make sure you LEARN it.). Most papers are written by people who feel like throwing in excessive symbols to represent simple things.

  4. Make your school fees worth it. I.e. don’t spend time taking easy mods to pull your CAP up. I should repeat that this is basically the last time that you

  • get to make mistakes and get away with them

  • get to learn (additional) things for for free.

  1. Study ideas, apply technologies.

    • The hottest thing on the market now a) is going to continue being the hottest thing, b) get chucked out.
    • If a), then well everyone will know it, violating 1).
    • If b) that means everyone that knew it found something better, so no loss either.

    Just learn enough about a technology to apply(unless specializing into tech field, e.g. security). FYI, cloud computing is almost as old as the internet ;)

  2. That which does not exist is for you to create!

Shaun Stanislaus

Ideas were never really new, they were reinvented.

Yang Shun

  1. Learning how to learn is crucial in this age where current technology turns obsolete in the blink of an eye. The skills you possess may not be needed by your future employer and you will have to learn on the job. Your employers will want you to learn FAST.

  2. Like what you do and do what you like. Naturally you will spend more time on it and you will do them well.

  3. CAP is hardly of importance (but don’t neglect it!) in securing a decent job. Your employers look out for your past experiences and how fast you pick things up. Attitude comes before aptitude.

Viet

  1. Computer Science/Software Engineering is the best industry where you can fail early, fail often, and fail cheaply, and learn new tricks more efficiently

  2. Inspiring video by Derek Sivers: Why you need to fail http://www.youtube.com/watch?v=HhxcFGuKOys

  3. The test of pudding is in the eating. Go get a freelancing project, teach youngl gitings and be IT consultant. You will learn more from what you picked up from theory books and grill your knowledge and skills

  4. The ultimate goal of science and engineering, including Computer Science & Software Engineering is to reproduce success and best practices so learn to convey your message with simplicity

Minqi

Overseas internships on overseas internship. Also, it has been mentioned before but again, learn and use a version control system. I have seen people spending 1 year as a computing student, yet still refusing to learn, using Dropbox to sync code with their teammates.

Dat

All of this may seem really overwhelming, if you’re just starting out. Just make the best out of your time in NUS (and SoC especially). You’re not alone.

Keir

If you take the CS1101S mod, skip the last two missions. lol. You can get a decent mark from the rest of it, no point wasting time near finals :P .

Evan

Functional programming is kind of hot nowadays. New programming languages such as Swift and Rust has several features borrowed / inspired from functional language. Even Java 8 and C++11 added things like lambda. It is quite sad that you can graduate from NUS without learning those things.

If you did not take CS1101S, it’s fine, you can catch up on those concepts by taking CS2104 or learning it on your own. You can always go beyond maps and folds and pick Haskell.

Johannes

If you are willing to take risks, test your limits, and put in the hard work you need to, you will find friends and mentors glad to guide you, help you, and accompany you.

Sleeper

Take your time, but remember to take the time. Plan your days and buffer everything. Best part about buffers is that if you don't need them, you have instant free time. Also, cap isn't everything.(lucky freshies)

Zhu Liang

Networking is actually quite important, actively meet with new people, not just your peers from SoC.

Jing Rong

  1. Make sure you get an internship during your college years! Even Y1 Summer isn't too early. Try your luck out there - there are companies willing to take you on as long as you display the hunger to learn. Also - NOC is a great learning experience! You get to go to work at a startup (probably an overseas one!), take on responsibility and autonomy for your projects, attend tech meetups, go to hackathons, etc. It's pretty life changing.

  2. Work on projects you like outside of school work. Doesn't even have to be useful or original. Just make something you like, and learn something new whenever you have pockets of free time

  3. Go to Hackathons - Not to win, but to pick up a new skill/work on something challenging. Of course freebies and prizes are great to have :)

Aadit Kamat

Tons of great advice here, just filling in what I've come to realize post-graduation:

  1. Invest in study strategies. As most people here have mentioned, CAP is not all-important. However, the process of learning how to learn (metacognition) is essential no matter what your career is, as long as you are a knowledge worker. Cal Newport has a lot of content geared specifically towards knowledge workers. One of his blog posts is often mentioned by Prof Ben in the context of the study habits of top students. The gist of it is you have to be consistent when you are learning and chunk information in spaced-out study sessions, rather than cram last minute.

  2. Start a blog. A lot of blogs have been referenced in this document and there is a reason why many knowledge workers start a blog in the first place: writing helps consolidate knowledge. There are a lot of resources mentioned here, but the only way you would be able to build a knowledge base around the topics of your interest is if you make the effort to recreate it for yourself. To become a better writer, you have to read more. However, writing helps you avoid the "fluency trap" created by passively consuming information: you are forced to summarize what you have learned by putting it in your own words. This way you identify the gaps in knowledge and seek to redress them.

A great MOOC to learn the nuances of writing is Writing for the Sciences, offered by Stanford University. While the name suggests that the techniques apply specifically to scientific literature, she touches upon a lot of the basics that make your writing effective. It may seem a little redundant, especially if you have taken a lot of classes that involve writing before, but I think it's good to recapitulate upon these basics.

Essentially, you have to break down writing into three processes that must be independent: 1) Prewriting, 2) Drafting, and 3) Revising. It's usually the first part that takes the most time because you are gathering the relevant information (researching) you need for the writing. Once you do that, you just need to combine these using complete sentences during the drafting process. You only worry about the nitty-gritty details like grammar, typos, and the overall flow of the written piece while revising your drafts. Edit yourself, read the drafts out, and use Grammarly to help you proofread one last time if you can't get others to do so.

  1. Create an effective organizational system for your notes. This is related to the first two points. The art of note-taking is essential for making the best use of your time studying and writing. Instead of passively reading lecture slides and textbooks or passively watching videos, you are spending the time capturing the information that you have learned from these reference materials. The notes can themselves be revised by referring to the reference materials when needed. In the end, you have to only go through the notes when you are studying for the exams.

Most exams at SoC allow a cheatsheet. Even if they don't, you should anyways create one because the process of creating the cheatsheet is more useful for learning than the cheatsheet itself. The only way to gain knowledge is by recreating the knowledge and making mistakes along the way.

One of the most effective note-taking systems that I have come across is the Zettelkasten, German for "slip box". As a researcher, you can see almost immediately why it is effective: you are making connections between the different topics covered in the literature review rather than going through them sequentially. This applies generally to the processes of studying and writing as well because they rely heavily on research.

In the Zettelkasten, you are splitting up the notes into three categories: 1) Fleeting notes, which are like Tweets: you only pen down your thoughts based on the information you have gathered 2) Literature notes, which are the takeaways from the literature summarized in your own words and 3) Permanent notes, which are formed by combining Fleeting and Literature notes and become the basis for your first drafts.

I use Obsidian to organize my Zettelkasten because I think that it was created expressly for this purpose, but feel free to use any other tool of your choice. Again, don't worry too much about the tool, it's the process that is more important.

  1. Connect with your professors. It is easier, in my opinion, to connect with industry professionals due to a plethora of social media tools at your disposal but it is harder to establish a good relationship with your professor outside the classroom. The role of university professors is not just to teach, they often conduct cutting-edge research and are subject matter experts in their respective fields. You can tap into their reservoirs of wisdom; they can become your mentors and guides. That is why it is also important that you pick the right classes to avoid the wrong kinds of professors if you can. This might sound self-serving, but do make sure that you get reference letters from professors in the classes you have done well or where you have helped them out. You never know when they would come in handy.

  2. Cut down on social media time. Some, like Cal Newport, advocate quitting social media altogether, but that may seem a little too extreme. I believe that you can harness the power of social media in a way that serves you better, especially if you don't have strong networks, to begin with. Rather than focusing on information consumption, focus on how you can use it to market yourself. This shift in mindset from consumption to production is essential for learning. Again it's quite easy to fall into the trap of obsessing over the stats, but what's most important at the end of the day is sharing ideas and getting feedback.

To cut back on the consumption, you can install the news-feed-eradicator extension on your browser. You can also look at other interventions suggested by the Centre for Humane Technologies.

  1. Look at college as a way to build career capital. You may end up pursuing a CS-related career, you may not. But what's important is you are making connections, learning new skills, and finding ways to grow as a person. You can then leverage this capital to create opportunities for yourself, crafting the kind of career you like in the long run.

  2. Don't compare yourself. It's easy to get carried away by peer pressure, especially when you are surrounded by the talented folks at SoC. Just because others are gunning for FAANG internships, doesn't mean that you should be. Your journey is your own to undertake. Try to see your peers as companions rather than competition. This is easier said than done when you are pitted against each other by the bell curve, but there are honestly more ways in which they can help you than hurt you.

Yishu

Meet people. Make friends. Surround yourself with smart people. Everything else will fall into place. Some good advice: you can move faster than you think and be willing to look stupid.

Peirong

Some things that I will continue to do if I were to be a freshmen all over again:

  1. If you don’t have relevant work experience, work on a personal project. It doesn’t have to be complicated but it should be of some use in your life so that it can be interesting. It will help your resume stand out and possibly make securing your first internship that much easier. Hiring managers, especially for early internships, use projects as a gauge of the drive and competency of the candidate when working experience is non-existent.
  2. If you can, do an internship/(some kind of job) where you work with languages/frameworks that are not conventional (preferably early on). For me, I did an internship in a startup that uses Haskell and it blew my mind to how can functional languages work in the production setting. The community at these places are usually small, tight-knit and you get a much more personal and direct interaction with the people - you end up learning a lot more.
  3. Don’t worry about grades too much and let it stop you from taking interesting courses. The knowledge that you gain will offer immediate benefits. It will widen the repertoire of technical topics you can discuss intelligently on at job interviews/social events and help you make meaningful connections. It creates more common interests with others in the industry and a good way to start the convo to get to know more people.
  4. Go for exchange. You get to build serious friendships with peers from other faculties and a fantastic way to explore your host university/city/region in great detail.

Kevin Lim

Grades aren’t everything and there’s more to life than studying. Don’t shy away from modules just because they’re known to be difficult or have steep bell curves. Take the opportunity to explore and find out what you like in a relatively safe environment.

Career-wise, everyone knows that it’s important to build up your technical knowledge, but honing your communication skills is equally crucial. Try to teach others (e.g. as a teaching assistant) or do mock interviews with your friends to practise breaking down your thoughts to someone else. This will serve you well in interviews and in the workplace.

Ahmed

Your 40+ years ahead will not be defined by the first grade you get, or the first job you start out with. Don't give up just because of a road bump! The mindset you carry will shape the journey you take in the long road of life ~