Advice for Computer Science freshers!


Published on

The presentation I gave at Software Freedom Day 2013 at Panjab University, Chandigarh to beginning programmers!

Published in: Technology
1 Like
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

Advice for Computer Science freshers!

  1. 1. How to be a Hacker 101! by Karan Pratap Singh Geek, hacker, open source, linux and android enthusiast, gamer, trying to be an entrepreneur
  2. 2. Some Common Myths: 1) Computer Science is easy. 2) You don’t really need to study in college. 3) You need to study from IIT to get a very good job in Computer Science. 4) On campus placements are the best! 5) .NET/C# is an awesome thing to learn and Java is dead :P 6) iOS is better than Android.
  3. 3. Some Common Myths: 7) Overnight successes(Angry Birds(52nd), Twitter(5)) 8) Computer Science is just programming, programming and programming! 9) Books are for losers! 10) Any other myths you have heard?
  4. 4. What hardware should I use? 1. Get a keyboard, typing on the laptop’s keyboard will make you sore! 2. Using an external 22inch monitor is a great idea! Larger screen space means more productivity! 3. Use an efficient mouse with adjustable dpi! Touchpads slow you down!
  5. 5. What hardware should I use? 4. Get a decent pair of headphones, as sometimes you need music to focus! 5. Having fast broadband internet access is a MUST! Without internet you have lost half of your productivity! 6. Check out what professionals prefer to use on
  6. 6. What hardware should I use? 7. Get a tablet or ebook reader, as it will help you a LOT! 8. An Android mobile is the best smartphone you can have, but go for a decent one(15k +) 9. Try to get a laptop with an Anti-Glare(or matte finish) screen and as high ppi as possible!
  7. 7. What programming Languages should I learn? Follow this order for best results: 1) Python(Why high level languages matter? Because of top-down programming approach! Okay….wait a minute, what are high level languages?) 2) Java 3) C/C++ 4) Web languages like HTML, CSS and JavaScript!
  8. 8. Totally new to computers? 1. The CS 101 primer by one of Stanford’s best teachers! Nick Parlante, 2. Another CS 101 Introduction course to do After you know Python basics,
  9. 9. Python Resources 1. Google Python Class, Contains Video Lectures and assignments as well as written notes on the topics covered in the lectures! 2. How to think like a Computer Scientist!
  10. 10. Python Resources 3. Python class on Coursera, on 4. How to think like a Computer Scientist!(Free Ebook!) Beginner friendly! :)
  11. 11. Python Resources 5. A slightly more advanced Python book, Learning Python 6. Once you are pretty familiar with python and basic programming, this intermediate course by Peter Norvig is awesome,
  12. 12. Java Resources 1. Stanford Java Class by Mehran Sahami, Excellent funny teacher, really nice introduction to programming and top down design and really cool assignments! :) The libraries used in this course can be found at http://www-cs-
  13. 13. Java Resources 2. Head First Java, great book! 3. Another nice online course,
  14. 14. C Resources 1.The one and only, The C Programming Language by Dennis Ritchie!(Not beginner friendly but totally worth your time!)
  15. 15. C++ Resources 1. Programming Abstractions course by Stanford, teaches C++ as well as Data Structures and Algorithms, =11f4f422-5670-4b4c-889c-008262e09e4e 2. And an awesome book C++ Primer Plus,
  16. 16. Web Development Resources 1. For HTML 5, this book is a pure Gem, 2. Learn web development, by the founder of Reddit, 3. Want a more HTML 5 focussed course? You got it, taught by Google Engineers,
  17. 17. Web Development Resources 4. For Javascript, JavaScript: The Good Parts by Douglas Crockford(works at Yahoo, expert at Javascript). 5. CSS, many web tutorials online and CSS: The Missing Manual by David Sawyer McFarland.
  18. 18. Which IDE should I use? 1. It depends a lot on your personal preference. 2. Java → Eclipse C/C++ → Codeblocks Python → IDLE, IPython Web → Bugzilla, Chrome Developer Console? 3. Vim, Emacs, or Notepad++?
  19. 19. Which OS should I use? 1. Linux is your best friend! It makes you a more intelligent computer user!(I recommend Ubuntu or Linux Mint 15) 2. Mac OS is also good, but has some slight quirks.(Getting traditional GNU software is an issue.) 3. Learning how to use the terminal effectively is very helpful! :)
  20. 20. Important online resources? 1. StackOverflow 2. Reddit 3. hacker news! 4. Quora.
  21. 21. Important online resources? 5. Coursera 6. Udacity 7. Code Academy 8. XDA Developers 9. TechCrunch, Verge
  22. 22. Important online resources? 10. IRC channels and mailing lists! 11. Staford E-Corner! and TED Talks! 12. Paul Graham’s Blog!(and other awesome people write blogs too :P ) 13. xkcd, The Oatmeal!
  23. 23. Video Time! We are 50% done :) Let’s all wake up by watching some awesome videos!
  24. 24. The best way to learn coding? 1. MUST READ, Teach yourself coding in 10 years by Peter Norvig, days.html 2. Learn by doing! Why coding projects are critical!(e.x. backrub, Pulse, Apple, hotmail!) 3. Collaborate with other coders who are more experienced than you. GSoC, Open Source :P
  25. 25. Why learn more than 1 language? Because in real life, most complex programs are polyglots! Python and C/C++ go great together! MySql is combined with many langauges to allow database handling!
  26. 26. Examples of real life polyglots Android: The Android operating system consists of 12 million lines of code including 3 million lines of XML, 2.8 million lines of C, 2.1 million lines of Java, and 1.75 million lines of C++. LibreOffice: LibreOffice use C, C++ and Java.
  27. 27. HOW to study for college exams? For sessionals: You just need to study 2 to 3 days before the sessionals For Finals: 1 week before the finals begin is more than enough. Provided you were attentive in the class :P Good Percentage/Grade: 75% and above is more than sufficient
  28. 28. Try to be T-Shaped
  29. 29. Other Skills 1. Learn to Touch Type, use a typing tutor software! 2. Learn to network! It will take you far in life :P 3. Learn to follow a schedule! The secret recipe of most successful people.
  30. 30. Other Important stuff 1) How to design your programs? Top Down Thinking? 2) Data Structures and Algorithms? and 3) Design Patterns? Head first design patterns,
  31. 31. Other Important stuff 4) Software Engineering? what the hell is that? Code Complete 2 is a MUST READ for beginners and experts alike, Head First Software Development is a nice primer on software engineering,
  32. 32. Other Important stuff 5) Why it is important to have good English skills? 6) Why you should be paying attention always! 7) Are some people more lucky than others? How to make yourself more lucky? Ex. find the number of images in the newspaper!
  33. 33. Other Important stuff 7) Importance of networking with Seniors! and other knowledgeable persons you meet. 8) Why it is important to read about failures too! “Wise men learn by other men's mistakes, fools by their own.” --H. G. Bohn
  34. 34. Other Important stuff 9) Use college to accelerate yourself in the future! Because when you are in the future, you see limitless possibilities!
  35. 35. Time for some ZEN! To follow the path, look to the master, follow the master, walk with the master, see through the master, become the master.
  36. 36. Thank You ;) You can reach me via Follow me on twitter: @kps_foo