advice for computer science freshers!

36
How to be a Hacker 101! by Karan Pratap Singh Geek, hacker, open source, linux and android enthusiast, gamer, trying to be an entrepreneur

Upload: karan-singh

Post on 14-Jan-2015

812 views

Category:

Technology


1 download

DESCRIPTION

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

TRANSCRIPT

Page 1: Advice for Computer Science freshers!

How to be a Hacker 101!

by Karan Pratap SinghGeek, hacker, open source, linux and android

enthusiast, gamer, trying to be an entrepreneur

Page 2: Advice for Computer Science freshers!

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 :P6) iOS is better than Android.

Page 3: Advice for Computer Science freshers!

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?

Page 4: Advice for Computer Science freshers!

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!

Page 5: Advice for Computer Science freshers!

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

Page 6: Advice for Computer Science freshers!

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!

Page 7: Advice for Computer Science freshers!

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) Java3) C/C++4) Web languages like HTML, CSS and JavaScript!

Page 8: Advice for Computer Science freshers!

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

Page 9: Advice for Computer Science freshers!

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/

Page 10: Advice for Computer Science freshers!

Python Resources

3. Python class on Coursera, https://www.coursera.org/course/interactivepython

4. How to think like a Computer Scientist!(Free Ebook!)http://www.greenteapress.com/thinkpython/

Beginner friendly! :)

Page 11: Advice for Computer Science freshers!

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

Page 12: Advice for Computer Science freshers!

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/

Page 13: Advice for Computer Science freshers!

Java Resources

2. Head First Java, great book! http://goo.gl/03Gys9

3. Another nice online course, https://www.udacity.com/course/cs046

Page 14: Advice for Computer Science freshers!

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

Page 15: Advice for Computer Science freshers!

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

Page 16: Advice for Computer Science freshers!

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

Page 17: Advice for Computer Science freshers!

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

Page 18: Advice for Computer Science freshers!

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++?

Page 19: Advice for Computer Science freshers!

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! :)

Page 20: Advice for Computer Science freshers!

Important online resources?

1. StackOverflow

2. Reddit

3. hacker news!

4. Quora.

Page 21: Advice for Computer Science freshers!

Important online resources?

5. Coursera

6. Udacity

7. Code Academy

8. XDA Developers

9. TechCrunch, Verge

Page 22: Advice for Computer Science freshers!

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!

Page 23: Advice for Computer Science freshers!

Video Time!

We are 50% done :)

Let’s all wake up by watching some awesome videos!

Page 24: Advice for Computer Science freshers!

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

Page 25: Advice for Computer Science freshers!

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!

Page 26: Advice for Computer Science freshers!

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.

Page 27: Advice for Computer Science freshers!

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

Page 28: Advice for Computer Science freshers!

Try to be T-Shaped

Page 29: Advice for Computer Science freshers!

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.

Page 30: Advice for Computer Science freshers!

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

Page 31: Advice for Computer Science freshers!

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

Page 32: Advice for Computer Science freshers!

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!

Page 33: Advice for Computer Science freshers!

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

Page 34: Advice for Computer Science freshers!

Other Important stuff

9) Use college to accelerate yourself in the

future! Because when you are in the future, you

see limitless possibilities!

Page 35: Advice for Computer Science freshers!

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.

Page 36: Advice for Computer Science freshers!

Thank You ;)You can reach me via

[email protected]

Follow me on twitter: @kps_foo