Sophomore

While it is not a requirement that you go through the 'freshman's roadmap', we recommend that you refer to it for valuable suggestions. You may skip the visual programming course in that roadmap if you are already in your second year of college.

If you are a CSE student you better move fast. You can afford to be slow if you have some other plans in life and a job in the industry is not your short term goal. The point is that you should be ready to start on the self assessment page by the time you finish second year of college. The goal is to experiment a lot in your third year of college to see what is your cup of tea.

If you are a non-CSE major, that is your main defense. That does not mean that you should not aim to be better than a CSE grad eventually if you plan to work in the software industry.

Irrespective of your major, you would have done a programming course in the first year using C or Java. Unless it is required by the curriculum, avoid taking any more programming courses using a specific language in the college, i.e. you should not take a C++ programming course just for the sake of it (or to put C++ in your resume). You should take any core concepts course like Data Structures, Algorithms etc. These concepts are applicable in all programming languages.

Just as a review and also to learn some topics that may not be present in a local university's first year programming course, here are some online courses that you can do -

    1. Introduction to Computer Science. CS50 OpenCourseWare offered at Harvard. "Introduction to the intellectual enterprises of computer science and the art of programming. This course teaches students how to think algorithmically and solve problems efficiently. Topics include abstraction, algorithms, encapsulation, data structures, databases, memory management, security, software development, virtualization, and websites. Languages include C, PHP, and JavaScript plus SQL, CSS, and HTML. Problem sets inspired by real-world domains of biology, cryptography, finance, forensics, and gaming. Designed for concentrators and non-concentrators alike, with or without prior programming experience." Expect to spend at least 20 hours a week to finish this course in one semester. Refer to seminars from earlier years when you have extra time to learn other things. If you have difficulty downloading the lecture/section/seminar videos, they are available via sneakernet.

    2. Try to register and do one of the following courses on Coursera.

      • An Introduction to Interactive Programming in Python (you will be able to create simple games using Python)

      • Algorithms Part1

    3. Introduction to Computer Science and Programming. OpenCourseWare at MIT. This course uses Python. We hope to provide a separate resource page for Python soon so that you do not have to buy any text book suggested on this course page.

    4. If you are a CSE major, The Art of Unix Programming should be on your reading list. This does not mean that you would not work on any other platform. This book highlights some design and programming concepts that are applicable universally. You should be familiar with at least half dozen of the mini-languages listed in this book. Familiarity means - you can read the code written in that language by someone else and you can reuse some of that code in any situation where it is efficient to do so.

[Under Construction; more info will be added soon]