
Ask HN: What a 2nd tier college student must do to be at par with the best? - amandavinci
I&#x27;m a student of VIT University, India. Everyone in our country, from academia to industry, looks at us as second class undergrads.<p>I&#x27;m passionate about solving problems and making things, especially AI and game development. But due to some bad decisions I ended up dropping two years after high school and could not get into the IITs i.e. the top colleges in India. Ever since I started college and found the sub-par level of CS education here, I have tried to take my education into my own hands. I&#x27;m an autodidact by choice and here is the strategy that I have followed for the past one and half years at college:<p>- MOOC : 
I have studied all the important CS courses from popular MOOCs like CS50, MIT OCW, etc. I have earned a certification in an AI MOOC taught by the IITs and completed the Machine Learning course from Coursera too.<p>- Projects : 
I have done some good projects and open sourced them at https:&#x2F;&#x2F;github.com&#x2F;AmanDaVinci<p>- Others : 
I have worked as a two man team to publish a game on Play Store and we also sell our plugins, tools and assets on Unity3D asset store. I have organized and instructed successful game development workshops as I plan to start a Game Dev club in our college.<p>Considering the experience and expertise of the HN crowd in the engineering field, what more could I do to be at par with the top students of the world?<p>1) Should I invest in AI &#x2F; ML nano degree certificates?<p>2) Should I work more on real software projects like open source AI and games?<p>3) Can I do anything else to improve myself?
======
praneshp
Possibly unpopular opinion here on HN. I almost went to VIT in 2007
(shockingly got into NIT Trichy instead).

1\. Focus on becoming a good programmer (ie, SPOJ/Topcoder/Directi). That'll
help you clear interviews, and get good at thinking about algos and data
structures. I'd even prioritize this over other CS fundamentals.

2\. Keep your GPA up and get into a good grad school. I disliked both the
interview process and the classism (ie, recruit from top schools) of Indian
companies when I interviewed there.

3\. If you don't want to go to grad school, make sure you don't touch
TCS/CTS/Wipro/<insert mass VIT employer here> with a 100-foot-long- pole.
Given your passion, and assuming you use the next two years to become a strong
programmer, you _will_ find a good place to work in Bangalore. You might have
to pay your dues, but please don't pay them at the above mentioned places.

And people who look at you as second class undergrads can fuck off (esp the
professors at IIT Madras :) ). I know several friends at IITs that preferred
to pot-smoke-away their time there. If you're near Chennai I'm happy to chat
with you.

~~~
amandavinci
Being a good programmer and having a good GPA seems like inversely
proportional in our college. Only the students who follow lecture slides and
are good at writing exams seem to have >=9 CGPA.

And yeah, it would be great to chat. Here is my mail: aman@amandavinci.me Or,
you can go to my website for social media contacts:
[http://amandavinci.me/](http://amandavinci.me/)

~~~
reachtarunhere
I understand the issue of balancing classes and doing projects. If you want to
go to grad school GPA will matter a LOT more. Keep it above 8 even at the cost
of spending less time on your skills.

If you are sure you do not want to go to grad school (which is very difficult
to decide at this point) focus more on projects. Try to get an internship at a
good startup and prepare for interviews hard (read DSA). Going to a top
employer like Google, MS, Directi will help you get over the second-grade
brand. All of these care more about DSA instead of all projects and
specialized knowledge in ML and AI. I know preparing for interviews is boring
compared to doing projects but take this advice seriously if you want to get
hired at one of the places I listed.

------
whitenoice
You are doing great! Don't let institution name bother you, it does not matter
much, it helps in getting interviews etc, but if you work smartly you will get
that anyway. Few things I would focus on:

1\. Build a strong CS and Math background, especially since you are interested
in AI, ML. Academia is the best place to do this. Look at the curriculum of
top engineering schools like mit, cmu for your sophomore year and see how you
can complement it with the courses you are taking. This will pay you dividends
in future. You are already doing that, which is great! Try to add more
structure to your execution.

2\. Take advanced courses on the topics you are interested as you get to your
senior year. A lot of MOOC’s have entry level courses but lack on advanced
topics. You will find these scattered across university lecture videos, you
already mentioned OCW.

3\. For prototype projects try building things from the ground up. For e.g.
Taking an Operating systems course great, build a simple filesystem from
scratch. It will help you in understanding the complexity involved in
production grade software and why certain design choices are made.

4\. For the projects that you are passionate about deep dive into it, its
great to see people talk about their projects with deep technical insight,
pros and cons of design choices made etc.

5\. Personally I would avoid learning every new language that comes up, focus
more on programming language concepts (there is a course of Coursera on this)
and learn few languages well.

6\. For internships look for startups that are working on interesting ideas.

7\. More than the certificates the projects what you did in those courses are
more valuable.

8\. Enjoy, make good friends, stay healthy and active.

~~~
amandavinci
Thanks. I'm currently taking the OS course this sem and we plan to build a
minimal OS for raspberry pi from scratch using the linux kernel, writing
system programs on top of it.

For internships, I believe start ups are the best bet to gain experience and
maybe gain a mentor for life.

~~~
krakensden
That course sounds amazing, you should blog about it.

------
segmondy
You are aiming too low. Why do you want to be on par with the best? Why not
exceed them? My advice to you is to learn more than computing. We tend to
obsess over languages, frameworks, algorithms & tooling.

Learn "software engineering", this has nothing to do with language, framework,
algorithm or tooling. This is about code organization, managing complexity in
code, deciding how to structure/architect an application. This is where you
are going to read what some will consider "boring" books, these books will
hold very strong opinions and are not exact science. You will have to take
that knowledge, apply your experience and come up with your own reasonable
opinions too. Here are sample of such books in my library, "Business Process
Management", "Ship It", "Architecture Principles", "domain driven design",
"Enterprise integration pattern", "Clean code".

The real world doesn't care what language, framework, algorithm or tool you
use. They just care that you solved the problem. This means you must
understand some other domains outside of tech. If your domain is only tech
then you will be building tools for programmers/IT folks. If you understanding
banking, insurance, health care, automotive, shipping, etc, you could apply
your knowledge towards the difficult or poorly solved problems in those areas.

If you become well rounded, you will have the skills to implement, the domain
knowledge to solve pressing problems, but more importantly the wisdom to know
when to and when not to break rules.

------
liquidise
You have already mentioned the top one for me: passion.

Colleges rarely teach you what you need to know professionally - they can't,
tech moves too fast. Instead, they teach you how to learn what you need to
know. This is an important distinction because it should inform your approach
to your professional growth.

1\. Stay passionate both about software and your own growth/education in it.

2\. Start some personal projects and, important, work on them until they reach
a place where you can talk about what you learned, the techs you used and be
able to at least show a page or two of it working.

3\. Be forthcoming in interviews about your desire to _create_. The longer i
am in software the more importance i put on hiring creative people.

Finally, think of software development as modern day blacksmithing. Those who
do well have a few things in common: passion, persistence and a great set of
artisans (mentors) to learn under. Prioritize finding some people who have
compelling opinions on software development and work with them. It will change
how you build software and the value you will bring to teams in the future.

~~~
amandavinci
I'm following the first two points earnestly and I'll start with the third one
as well.

And the mentor aspect is what I'm missing right now. So, I have planned to
contribute to open source and/or apply to GSOC '17.

Any other ideas how to find suitable mentors?

~~~
MarkMc
It's worth putting your contact details on your HN about page

~~~
amandavinci
Just did that :)

------
ageis
Having come from a similar background, I can offer you these suggestions -

1\. The level of programming taught in Indian universities is not enough.
Writing a sort program is quite different from writing good, maintainable OOP
code. Apart from working in a good company, one way to develop this skill
(which I feel is critical) is to look and contribute to good open source
projects - elasticsearch, spark, etc. Unfortunately I don't know of any good
books which teach this overall, apart from specific aspects like Effective
Java.

2\. Another aspect that I feel is missing in Indian universities is
challenging assignments. I would have liked to write my own toy OS to learn
systems, or toy kafka to learn distributed systems. The more core computer
science fundamentals you master now (preferably through writing code along
with learning theory), the better an engineer you will be later.

3\. Another aspect that is lacking is the way to reason through things. Indian
universities have a third-person approach on the lines of "the experts do
things this way so we will just do it this way", on the contrary in a US
university the reasoning is more on the lines of "we use to do X, that had Y
limitations. So we moved on to Z, now your assignment is to design an
extension to Z (say Z+) which solves YY limitation". Unfortunately, I don't
know what can be done to improve the way we reason about things.

4\. Don't forget to explore different areas. I started with computer graphics,
moved on to compilers, then app development, then data engineering, then
infrastructure development, then back to data engineering.

~~~
ai_ia
That is some solid advice right there. Thanks.

------
captn3m0
Few tips:

1\. Apply to startups. If you are looking to apply to the big four, make sure
you do your diligence and work hard at coding contests. 2\. Practice peer-
teaching. VIT is a huge college. There are more people like you, and you can
easily help each other by doing projects together. 3\. The industry, in
general, rewards freshers who have worked in large teams and projects before.
4\. Make sure you get a good internship. Shouldn't be hard for you, but if you
are interested, drop me a mail (Razorpay, Bangalore) 5\. Go for depth first
and then pick your specialization within software. For me it was Web
Development and Software Security. Could be anything for you, but make sure
you have tested the waters in other fields before picking one. The one benefit
of College Life is that you have time to experiment and fail. You can try out
projects in all these different fields, and then decide what you are really
passionate about. 6\. GSoC is a great option. I'd recommend trying for a
experienced org over a new one. 7\. Avoid freelancing, unless absolutely
necessary. It rewards short term gains, over long time learning. You can make
much more money cloning WordPress themes and reusing them across projects then
learning a new programming language. The latter would help you much more.

I'm very interested in Software Education in India, and if would like to talk
more, drop me a mail (email in profile).

~~~
amandavinci
Start-up internships and GSOC are the best use of a summer vacation, I agree.

And regarding software education, I believe MOOC is going to play a very big
role in the near future especially in countries like India where hard working
and deserving students lack quality world class education.

And given the Indian affinity for certificates and credentials, I believe this
could be a great start up idea too.

~~~
captn3m0
In an ideal world, you won't need MOOCs. One thing I keep repeating is:

    
    
        Make > Learn > Read
    

Where Make = Actually working on a project, Learn is actively learning a topic
(via a course or a book you're following), and Read is just reading through
books or online guides.

This has served me well as a guide, however it doesn't apply neatly to all
areas. Invest in Skills, not Credentials.

------
deepaksurti
>> I'm passionate about solving problems and making things, especially AI and
game development

Then you just got to start making them, if not.

For game development, even though a lot may not make sense, read the book
'Game Engine architecture'.

Now start making a game engine with parsers for any open format such as
Collada/Quake, add sound, physics, animation. Keep doing it in parallel with a
3D game of your choice. Yes, I am asking to start off directly with a 3D game,
not a popular opinion in the game learning world. You will also learn game
related math, physics, AI along the way.

Write a game feature, extract to your game engine. Rinse, lather, repeat.

Why do I suggest this? This is the advice I would give to my younger self ;-)

------
nickbauman
Code that solves a real problem or runs a real (viable) business is more
important than any degree certificate you will ever get. 93% top most
successful corporations in America are managed by people who come from 2nd and
3rd tier grads. Steve Jobs was a college dropout.

------
onion2k
_Everyone in our country, from academia to industry, looks at us as second
class undergrads_

Go and work somewhere where your university's reputation is unknown, then
people will rate you on your work rather than the university you went to.

~~~
amandavinci
That seems a great hack :)

------
m0llusk
Real work is always more impressive than academics. The sooner your schoolwork
fades into the background of your career the better.

Many posts here emphasize direct skills, but it is important to understand
that the modern workplace requires a broad range of skills in particular
related to communication. One specific communication methodology which is
worth learning is Nonviolent Communication which can enable people with
different contexts and points of view to have useful conversations that
resolve significant conflicts.

~~~
wingerlang
This can vary with the culture of the country/region/company though.

------
bernardino
I am glad to see a question asked from college student. I am always interested
to hear from others in college. I am twenty-one-years-old, attending a
community college in the states and studying a bit of computer science.

I am going to go off on sort of a tangent and offer you some general advice:

1\. Do not worry about what other people think. You mentioned in the beginning
of your question about being looked as "second class undergrads", and that is
completely false. As Rainer Maria Rilke once noted: "Your life is so
inexpressibly your own..."

2\. Build things you are passionate about, and not because they'll help you
land a job but just for the sake of building things. If you are interested in
artificial intelligence or machine learning, learn about them and build
something. Better yet, keep a blog and write about the process of learning
about AI, ML, etc. Don't be afraid to email some people you look up in the
industry for guidance.

3\. Keep learning, learn about anything that sparks your interest. Nothing is
boring in its deepest essence. There's always something to learn. And if you
know a lot, teach it or write about i.e. set up a repository for other people
to learn more about it in an easier way.

Above all: Just be you. Don't label or attach yourself with certain
identities. Build great things just for the enjoyment of building things. Love
the process of building things. Collaborate with friends and colleagues. Go
boldly.

Learning, building, etc. is all a joy. Don't try to be the best _____, just
build stuff that matters to you.

~~~
amandavinci
I love to talk to other passionate CS students too. Helps me reorient and
correct my perspective.

And I'm gonna follow your advice and blog about my learning experiences.
Infact, there are valuable gems of advice here and I'm thinking to compile
them together in a blog post for many other curious students like me.

------
shubhamjain
Having completed graduation in India with a college much less in glamor than
VIT, I would advice you to give yourself some slack and continue working
earnestly on interesting stuff. When I graduated, I was deep-down with anxiety
to get proficient in frameworks like Rails / AngularJs. Apparently, what were
web frameworks in my time are AI / Big Data these days — the skills insinuated
as requisite to be taken seriously.

But things are much simpler than that. Programmers solve problems and even the
most revered programmers are just solving other programmers' problems. If you
are building stuff, irrespective of size, scale or complexity, you're on the
right track. Snub the anxiousness of not studying in the top-tier college; it
won't matter few years down the line. I certainly can relate to zealousness of
solving complex problems, but in my view, it's certainly not a prerequisite
for personal fulfilment, or success, for that matter.

In day-to-day work, I am yet to use anything related to AI but every now and
then, I find immensely time-saving project that just solved an insignificant
problem.

------
gh1
I checked out the game you developed...looks awesome.

Look - since you are passionate about solving problems and making things, why
don't you just create sources of passive income or build some business from
the ground up? This way you will be able to bypass any reputation issues that
your university has and focus on your creativity instead.

~~~
divbit
> why don't you just create sources of passive income or build some business
> from the ground up?

I feel like this is good advice to some people, but it also requires a
business skill-set / interest, which is not everyone's cup of tea.

~~~
gh1
Agreed.

------
ravirajx7
You're doing great. Don't stop your learning curve fall down. I feel that
there are really very very less people like us in our country who have similar
likes and views though they share almost same story like ours.I can understand
the situation of student like me. I too am sophomore student at an Institute
ranking way below yours but i feel it doesn't matter a lot specially in our
field. I read so many things over internet like how i can develop myself up
and so and so though i start everything i don't do anything good which i can
show or prove to the world Trust me bro you can't match my level of
procrastination. I haven't done anything except reading things over internet
and i don't know why the heck i came here to suggest or advice you. But one
thing i would like to tell you: don't let yourself feel down and fuck the
negativities around you instead try utilizing and learning as much as you can
in forthcoming years. There are hell lot of people who are there to help us
out and internet is our best friend. I'm studying really hard to learn things
around me and i feel you should do the same and make each second count for
your better future. Good luck.

------
akarambir
Hey,

You are already on right track. Just complete the Graduation as it is required
by many companies(and visas if you need any in future). Go for fundamental
courses more on MIT OCW and others. I also studied in a private engineering
college from India(2010-2014). My rant at the time here:
[https://nainomics.blogspot.in/2011/11/welcome-to-indias-
high...](https://nainomics.blogspot.in/2011/11/welcome-to-indias-higher-
education.html)

I just focused on my learning. Some professors were encouraging. That helped.

One anecdote: I made a heroku style PaaS for my final year project(like
dokku). My professors couldn't understand what it does and why is it even
necessary. Their main point was we have "shared-hosting" services to do
these(I had to go from php to java/python example then :P). Now after two
years they have their industry peers saying docker all over and have called me
several times regarding that.

I am now Backend Dev building APIs with Python(Django) and Elixir at a small
company. I also have small Open source contributions under my belt. Contact me
if you need someone to talk to

------
mohanmcgeek
The quality of first tier colleges in India is still terrible, if you didn't
know that already. Google/Facebook doesn't hire everyone from IITs hardly two
or three.

You're doing far better than those people, from what I've seen.

If you're in Chennai: come for the meetups: I'm the co-organizer of docker and
golang meetups. Also checkout devops meetup and the Linux group at IIT Madras.

You get to meet some of the smartest and experienced veterans in the city.

------
seesomesense
If you are at Vellore (VIT appears to be Vellore Institute of Technology ),
there is a world class medical institution in your town (CMC Vellore )that
sends many of their graduates around the world to places like the Mayo Clinic
and MGH.

They have a well regarded neurophysiology lab that was run by Marcus
Devanandan. Perhaps you could do research / collaborate with them.

~~~
amandavinci
Thanks for taking the time to help me out. :)

And yeah, I'm currently looking for internships and such for the summer. But
the credentials card always comes in play.

------
AnimalMuppet
I'm in the US; if you're going to stay in India, my advice may be less
helpful.

But I would say that you're in an environment where everyone cares greatly
about credentials, because that's all anyone has so far. Once you graduate and
have worked for a few years, people don't care so much about the credential.
It may matter some, but it matters more that you can actually _do_ things.

So you need to get a credential that is good enough to get you a job. But it
matters more that you actually know what you're talking about, rather than
just being able to repeat what the professor said. You need to _understand_ ,
not just memorize. You need to be able to write software that actually helps
people do things, not just classroom exercises. If you can, then you will
surpass many who have better credentials than you. It may take a few years,
but you will pass them.

------
tallanvor
I can't really speak for anyone else, but speaking as someone who has been
involved in interviewing and making hiring decisions, I don't care what school
you went to. I care that you graduated, and I care to a slightly lesser extent
what your degree is and what your GPA was.

What I really care about when I interview you is how you answer my questions
(this doesn't mean that I expect you to be able to answer every question
fully), how well I can gauge the depth of your knowledge, and whether or not I
think you will listen to senior engineers, learn what you need to do quickly
and with an appropriate level of mentorship, and be a team member rather than
someone trying to do his/her own thing.

Ok, I'll admit that someone who went to a for-profit school is going to have a
higher bar to pass, but I haven't had to worry about that yet.

~~~
AmitJS
But if you are a hiring manager at one of the big name companies you would not
even short list non-top tier candidates for the interview. I have been
applying since the past one month and its the small companies that respond.

I think someone who has worked in Microsoft - who might not have contributed
much - minor bug fixes compared to the guy who has a worked in a startup -
build products from scratch and all that in an extensive deadline - staying up
entire nights on a new few occasions to make the release date ends up getting
a straight reject.

------
eachro
Focus on learning and self improvement. Everything else will naturally fall
into place.

------
glangdale
Do you want to be a game developer or an AI expert? I would suspect that the
things you should do are going to be quite different.

Also, what do you mean by "at par"? Status? Money? Knowledge? Expertise in a
given area, and if so, what?

~~~
amandavinci
Though I have an interest in games and AI / ML, I would still consider being a
good software engineer first. I'm aiming for a strong foundation and expertise
in one field: AI or anything related. Being a fresher, I believe I won't get
to work straight at these.

And by "at par", I meant the same opportunities that a top school student
gets.

~~~
glangdale
My opinionated version is that you should bail out on games and focus on
AI/ML, then try to get into the best grad school you can and get really good
at difficult things that other people can't do (even better, things that they
can't do and don't want to do). Games fail that test because too many people
want to work on them.

Becoming a good software engineer seems to come from working with people with
good taste (on real projects). In my experience I haven't met anyone who
learned to be a good SE from university (it may be possible, but I doubt it
would happen at a mediocre university).

~~~
amandavinci
Indeed. After talking to other people and thinking hard about my options, I
have come to same conclusion. But finding good people to work with or under
seems really hard. I really don't know how to find good mentors other than
contributing to open source and hoping someone senior likes my contributions.

~~~
glangdale
OK, so I'm writing in a 'dead thread' (likely) but for what it's worth: I
think your last sentence is the right idea; do the work then find a mentor in
a related area as a consequence of that. I _really_ don't like being
approached by people who haven't put in any effort yet want to network for the
sake of networking.

------
mbrodersen
Study after study has shown that going to a "2nd grade" university makes no
difference to your skill level and lifetime earnings. They basically compared
people who were accepted to "top grade" universities and chose to go somewhere
else with people who _did_ go. So don't stress about it. Simply learn as much
as you can on/off university.

~~~
mbrodersen
But of course if you have to _pay_ to go to university (I didn't) then your
dept will be so much higher going to a "top grade" university.

------
tps5
No one you want to work for is going to look down on you based on where you
went to school.

I hesitate to give you advice since it sounds to me like you're pretty busy
already.

------
RangerScience
I've been watching a friend follow their passion (food); what they do, and
what I do/think in response. At this point - anything and everything to do
with food, my first thought it - What's Veronica's opinion on this?

You want the people you know (and who know you) to have their idea of you
intertwined with what you want to be doing; now, everything they encounter
that has to do with that will get funneled your way.

------
sch00lb0y
keep on learning new stuff. make use of time. vit university has a good
startup culture so try to find a startup and work on it. here is the some of
the vit open source project where you can contribute
1)[https://github.com/karthikb351/CaptchaParser](https://github.com/karthikb351/CaptchaParser)
2)[https://github.com/princebansal/MyVIT](https://github.com/princebansal/MyVIT)
3)[https://github.com/shubhodeep9/go-MyVIT](https://github.com/shubhodeep9/go-
MyVIT) 4)[https://github.com/aneesh-
neelam/VITacademics](https://github.com/aneesh-neelam/VITacademics)
5)[https://github.com/sch00lb0y/Vit-Photo](https://github.com/sch00lb0y/Vit-
Photo)

------
greenmoon55
First, you need to think about what you want to do after graduation, such as
becoming an Android game developer or a graduate student focusing on AI. Then
figure out what you need to do to achieve your goals (such as work on projects
or do research) and keep working on it. Everything will be fine and you can be
at par with the best.

~~~
amandavinci
Most of my undergrad friends are really torn between academia and industry.
And since I'm in my sophomore year, I feel it's too early to make the right
call. Anyways, I do need to decide sooner or later.

~~~
tnecniv
I don't know what it's like there, but I would get involved in research with a
professor if possible. Doing so had a really positive impact on my undergrad
experience, and will inform if you want to stay in academia or not.

~~~
amandavinci
College is a good place to try things out before diving into them. But I have
found no passionate profs in my college and getting a research internship
under a good prof is a task in itself.

------
amandavinci
I have compiled all the valuable advice and suggestions here into a blog post
for other students like me:

[http://amandavinci.me/hackernews-advice-for-budding-
makers-h...](http://amandavinci.me/hackernews-advice-for-budding-makers-
hackers/)

------
kc10
No one really cares where you graduated from. I have worked with developers
from IITs, BITS and much smaller colleges. Some of them are smart, some of
them are mediocre and some are bad, irrespective of the college they are from.

All that matters is your passion and how much you put into the work you do.

------
asafira
At the risk of sounding cliche', just do work at something you enjoy. If you
think there will be valuable knowledge in the degree certificates, go for
them. If you have a cool idea you want to explore, go for it.

~~~
amandavinci
Yeah exactly but I always feel like I'm short of time. Like just a few years
more and I'll have to look for a job. Mandatory attendance at boring classes
doesn't help much too.

~~~
Hydraulix989
You seem like you are really on top of your game though. I'm impressed. It's
sad to see so much weight on brand name schools.

~~~
amandavinci
Thanks a lot. I found Paul Graham's essay on the credentials and pedigree
quite reassuring. :)
[http://www.paulgraham.com/credentials.html](http://www.paulgraham.com/credentials.html)

    
    
      "Admission to the right university can make or break an ambitious young South Korean."

------
grigjd3
Don't let yourself be entrenched in the things you already know. Take on tasks
well outside of your comfort zone and peel away at those problems so you are
always getting better.

------
rhizome
There is no "best," but you mention AI in two of your three questions, which I
think answers the third.

------
cvigoe
I think I am in quite a similar position to you: after secondary school here
in Ireland, I didn't consider any universities outside of my home town (pretty
much because I didn't know a single person who was considering bigger and
better options, so it genuinely didn't cross my mind to apply to Stanford,
CMU, MIT etc.) so I ended up going to a fairly average and not very well known
university to study electronic engineering for my undergrad.

I went on an exchange for a year to UCLA and this was when I started to feel
something similar to the sentiment you're expressing here.

I'm now in my 3rd year of undergrad EE and for the last year I've been trying
to fast track myself into the AI / ML field as I've been increasingly
regretting my EE major and becoming more and more interested and passionate
about ML (particularly the intersection of ML, altruism and design): I got
Norvig & Russell's textbook and read it in outside of my engineering classes,
read less technical books like Nick Bostrom's Superintelligence for motivation
/ food for thought, made a simple collaborative filtering recommender system
using the movielens open source dataset, moved away from the web dev stuff I'd
been doing in 1st and 2nd year and tried to hone in on improving my algorithm
and pure CS skills, watched a load of AI / ML videos to try and get a better
sense of who's who, where's where and what's going on etc. in the field. The
"dream" (I use that word loosely) is to do the google brain residency program
instead of a PhD, or the U Chicago data science for social good fellowship, so
I've been trying to figure out how to get myself into good shape for either of
them.

It's been overwhelming at times, largely because I feel like 1) I'm not in the
"right" major, 2) I've had a taste of but no longer "go to" UCLA (or an
equivalent high ranking university) and won't be graduating from there so will
need to work hard to stand out against the competition for placements /
fellowships / internships 3) I don't have mentors or peers who can help me
navigate the field (I have a great relationship with a lot of my engineering
professors but again, it's not ML). So I'm sort of trying to make sense of it
all myself. It's reassuring to hear there are others feeling similarly and
it's great to hear all that you're doing!

On a positive note, I suspect you may be overestimating the educational
superiority of the top tier schools (I know I certainly did before I went to
UCLA) but at the same time I don't think it's fair to completely disregard the
big unis and just say "circuit theory is circuit theory" and forget about it.
While I was there, I really didn't notice all that much of a difference in
terms of course content or even teaching quality - the biggest difference was
there were an awful lot more high achiever students in my EE classes compared
to in my home uni in Ireland, and there was a much more impressive "career
fair" and internship opportunity scene than at home (think Irish Cement vs
Hyperloop One).

You seem to be doing everything right. I think I was edging down a "burnout"
path a couple of months ago with fretting over what you're saying and over my
own EE vs CS major "challenge". I've tried to take a step back and remember
that there's no one enforcing a particular pace or path for me, hopefully you
won't let the fretting get in the way of your passion which almost happened to
me.

Just wanted to comment this to warn you about the burnout thing, reassure you
somewhat about top schools and throw in a few links you might find interesting
for good measure!

You mightn't find any of these links below helpful, you very well may be much
more well read than myself but I thought I'd link these here anyway. The first
is a reassuring AMA on reddit from the google brain team (particularly the
comments where the team talk about all the different backgrounds everyone has
at google brain). The second is a list of programmes, fellowships, resources
and random AI / ML related pages I've encountered in the last year (amongst a
lot of other stuff ). The third is a playlist I made for a friend on
interesting AI / ML videos which you most likely will have seen before but you
might just enjoy anyway. The quick interviews are cool if you haven't seen
them already.

Anyway - best of luck!

[https://www.reddit.com/r/MachineLearning/comments/4w6tsv/ama...](https://www.reddit.com/r/MachineLearning/comments/4w6tsv/ama_we_are_the_google_brain_team_wed_love_to/?utm_source=amp&utm_medium=comment_header)

[http://sharedli.st/cvigoe40g9](http://sharedli.st/cvigoe40g9)

[https://www.youtube.com/playlist?list=PLxB_QX9z7BFSc7VRmy5zt...](https://www.youtube.com/playlist?list=PLxB_QX9z7BFSc7VRmy5ztmFzthfr96bmC)

------
Ologn
I spent years working in IT before going back to school at night to get a CS
degree.

One thing is to just learn the subjects and get as good a grade as possible.
Even if a class is subpar, just learn the subject. I had to submit an
assignment once about process scheduling in Linux etc. After ten minutes
study, I knew I had an A+ on the assignment already. But I had always wanted
to look into that topic any how, so I spent several more hours reading about
it _for myself_. I always wanted to learn about scheduling, and if I punted on
it then, when would I ever study it? If I did that all the time my skill level
would be high.

If you study and get good grades and have a good relationship with professors
(go to office hours and schmooze a little, pay attention and participate in
class and be prepared and listen), you can always apply for a Masters at IIT
or elsewhere. So you can still get that name if you want it.

If the subject is theory of computation and the teacher is sub-par, just go
above and beyond. Learn about big-O and the squeeze theorem and pushdown
automata for the class, but for yourself as well. Read (some of, all of) a
non-assigned book on automata theory if necessary.

Insofar as projects, one thing I suggest is doing projects related to
coursework. Toward the end, or right after a class on C++ - write your own C++
program, or fix an issue with a Github hosted C++ program and send a pull
request. If it is a graphics class on OpenGL, write your own program in OpenGL
towards the end or right after the class - maybe explore iOS/Android OpenGL
ES. Or look at scikit-learn after an AI class. Ground some of the theory you
learn in class with application.

Your classes covering concurrency and threading and critical sections and
mutual exclusion may seem boring in school, but if you're a programmer you
_will_ run into these things and you will be happy you learned how to deal
with it properly a few years back, even if you haveto go back and read up on
it. The AI stuff may sound exciting, but getting all these details right
together is what will get you to be a good programmer.

From what you wrote, my main advice is don't be too all over the place. If you
have a class in databases and a class in Java, that semester, spend a lot of
time learning about the theory, and maybe a little time in application setting
up MySQL on your desktop and writing a Java program to populate kt. It's OK to
have one other side project going at a time of something that interests you,
but you should be spending a lot of time learning about databases and Java.

If you have time on your hands, just dive more into it. For example, in the
USA, a drink may be 2.5 liters. In some countries that is 2,5 liters (comma,
not period). I once submitted a patch to a Java project doing a switch/case by
country. The upstream told me the Java had a DecimalFormat class that already
did that. My method was a waste of time, and also less complete. It was
something about Java I nad not learned. You're just scratching the surface in
class, there's a lot of ground to these subjects.

So get a good grasp of each subject you study. Meanwhile, if you have an
interest or specialty you'd like to pursue, do that as well.

