Advice for Computer Science freshers!

1,032 views

Published on

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

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,032
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
78
Comments
0
Likes
1
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 usesthis.com
  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, https://www.coursera.org/course/cs101 2. Another CS 101 Introduction course to do After you know Python basics, https://www.udacity.com/course/cs101
  9. 9. Python Resources 1. Google Python Class, https://developers.google.com/edu/python/ 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! http://www.greenteapress.com/thinkpython/
  10. 10. Python Resources 3. Python class on Coursera, https://www.coursera.org/course/interactivepyth on 4. How to think like a Computer Scientist!(Free Ebook!) http://www.greenteapress.com/thinkpython/ Beginner friendly! :)
  11. 11. Python Resources 5. A slightly more advanced Python book, Learning Python http://goo.gl/S9nD8i 6. Once you are pretty familiar with python and basic programming, this intermediate course by Peter Norvig is awesome, https://www.udacity.com/course/cs212
  12. 12. Java Resources 1. Stanford Java Class by Mehran Sahami, http://goo.gl/lFIzB 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- faculty.stanford.edu/~eroberts/jtf/
  13. 13. Java Resources 2. Head First Java, great book! http://goo.gl/03Gys9 3. Another nice online course, https://www.udacity.com/course/cs046
  14. 14. C Resources 1.The one and only, The C Programming Language by Dennis Ritchie!(Not beginner friendly but totally worth your time!) http://goo.gl/Wf8jUC
  15. 15. C++ Resources 1. Programming Abstractions course by Stanford, teaches C++ as well as Data Structures and Algorithms, http://see.stanford.edu/see/lecturelist.aspx?coll =11f4f422-5670-4b4c-889c-008262e09e4e 2. And an awesome book C++ Primer Plus, http://goo.gl/MSt8NX
  16. 16. Web Development Resources 1. For HTML 5, this book is a pure Gem, http://diveintohtml5.info/ 2. Learn web development, by the founder of Reddit, https://www.udacity.com/course/cs253 3. Want a more HTML 5 focussed course? You got it, taught by Google Engineers, https://www.udacity.com/course/cs255
  17. 17. Web Development Resources 4. For Javascript, JavaScript: The Good Parts by Douglas Crockford(works at Yahoo, expert at Javascript). http://goo.gl/IN5jZd 5. CSS, many web tutorials online and CSS: The Missing Manual by David Sawyer McFarland. http://goo.gl/5pgpml
  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, http://norvig.com/21- 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? https://www.coursera.org/course/algo and https://www.coursera.org/course/algo2 3) Design Patterns? Head first design patterns, http://goo.gl/1X2WMW
  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, http://goo.gl/TC0Nf6 Head First Software Development is a nice primer on software engineering, http://goo.gl/dJVNmV
  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 pulug@googlegroups.com Follow me on twitter: @kps_foo

×