Course Schedule: 1.5 year Undergraduate Neuroscience Education

I’m all for self-studying, including going through an entire college curriculum on your own, in less time than a traditional four-year program.

based on several schools (Yale, Harvard, MIT, Johns Hopkins, University of Pennsylvania, and Oxford University) I have created a two-year study curriculum in neuroscience, using open-courseware.

Year 1:


  • Principles of Neuroscience
  • Neurobiology


  • Animal behavior
  • Neurobiology of behavior


  • Structure and functional organization of the human nervous system
  • Synaptic organization of the nervous system
  • Brain development and plasticity


  • Bioethics in neuroscience
  • Experimental methods in neuroscience
  • Research stats


  • Cell and molecular neuroscience
  • Molecular transport


  • Neurobiology of learning and memory
  • Hippocampus


  • Circadian neurobiology
  • Perception and decision


  • Neuroeconomics
  • Motor control


  • Pain
  • Autonomic physiology


  • Biochemistry
  • Molecular genetics


  • Evolutionary neurobiology
  • Systems neuroscience


  • Intro to computing
  • Fundamentals of computational neuroscience

Year 2:


  • Cognitive neuroscience
  • Neurobiology of emotion
  • Functional brain imaging


  • Neuroscience of visual perception
  • Smell and taste


  • Auditory system
  • Drugs and the brain


  • Biological bases of addiction
  • Behavioral pharmacology


  • Brain injury and recovery
  • Neurodegenerative disorders


  • Neurobiology of neuropsychiatric disorders
  • Genes, circuits, and behavior



1.5 year Undergraduate Neuroscience Education

  1. Principles of neuroscience
  2. Neurobiology
  3. Neurobiology of behavior
  4. Animal behavior
  5. Structure and functional organization of the human nervous system
  6. Bioethics in neuroscience
  7. Brain development and plasticity
  8. Cell and molecular neuroscience
  9. Synaptic organization of the nervous system
  10. Molecular transport
  11. Neurobiology of learning and memory
  12. Hippocampus
  13. Circadian neurobiology
  14. Perception and decision
  15. Neuroeconomics
  16. Motor control
  17. Pain
  18. Research stats
  19. Experimental methods in neuroscience
  20. Biochemistry
  21. Molecular genetics
  22. Evolutionary biology
  23. Systems neuroscience
  24. Fundamentals of computational neuroscience
  25. Intro to computing
  26. Cognitive neuroscience
  27. Neuroscience of visual perception
  28. Smell and taste
  29. Auditory system
  30. Drugs and the brain
  31. Biological bases of addiction
  32. Autonomic physiology
  33. Brain injury and recovery
  34. Neurodegenerative disorders
  35. Neurobiology of neuropsychiatric disorders
  36. Neurobiology of emotion
  37. Behavioral pharmacology
  38. Genes, circuits, and behavior
  39. Functional brain imaging



List of CS Courses: Year 1 of Self-Study

Building my own website from scratch

As I’m teaching myself programming, I’ve begun dabbling in HTML/CSS, and JavaScript (JS). As part of my learning, I’m working on creating a responsive and fully operational website from scratch, using all the concepts I’ve been learning. As I learn, I will add the concepts into the site, modifying and expanding as I go to reinforce my coursework.

This is my first code:

Screen Shot 2015-11-01 at 10.11.03 PM

Skills that self-taught programmers lack

Every once in a while, I look up the skills that self-taught programmers lack, as compared to their formally educated peers. I think this is important to keep in mind, not just in terms of jargon, but also in how you approach problems. There could be solutions available for your programming problems that you aren’t even aware of, because you just don’t know the industry as intimately as someone with a college degree might.

This isn’t to say that self-taught programmers are inferior; I’m biased because I’m on the path to becoming one, but I do think having the dedication, drive, and intelligence to teach yourself programming and computer science confers just as much credibility as someone with a brick-and-mortar education has.

As I learn more, this post will be updated.

  1. Learning how to program in a specific programming language is worthwhile, so long as you not get lost in the details of that programming language and forget to learn skills like parsing, optimization, lexing, type systems, etc.
  2. A big area that self-taught programmers lack understanding in are algorithms and data structures, including elements like sorting, recursive algorithms, and compilers.
  3. Systems architecture is another gap area, including understanding kernel and its abstractions.
  4. Understanding programming language standard libraries, e.g. Python or Java.
  5. Communication: you don’t work/live in a social vacuum. Long-dead are the days when a programmer could be socially awkward and sitting in a dark corner of the office. You must be able to deal with others effectively and communicate well in both spoken and written form.
  6. Writing: just because you spend all day writing code doesn’t mean you’re just as good at writing words. Brush up on your skills; don’t expect the tech writers (which I’m one now) to do the heavy-duty writing for you. It’s your job, as the “expert” of your project to be able to describe well the components, etc. to another person.
  7. Learn about design patterns. You can get a code written by chopping at it like Michelangelo did with David, but understanding the fundamentals will help you write cleaner and better code. don’t breeze through foundational elements.
  8. Learn to debug well.
  9. “Having a firm understanding of computer science and programming logic allows one to adopt to new languages quicker—something crucial in the rapidly-changing tech world,” says Daniel Gigante, founder of Crowdshare.
  10. Frighteningly to me:Tim Segraves, co-founder of Revaluate, thinks that formally-educated programmers tend to have the ability to learn new languages more easily.“When hiring I give more weight to candidates with degrees due to that ability to learn new things. You never know when your company will be adding a new technology,” Segraves says.
  11. Self-taught programmers don’t always know what they don’t know.
  12. Understanding the difference between code and clean code.

Tips from real programmers

In scouring the Internet for tips on becoming a self-taught software engineer, I come across little jewels of wisdom. I’ll be sharing them with you:

  1. Start a GitHub account. Put your code up and have others review, as well as take the time to review others’ code. I liken this to writing and learning to write: You have to have your own work critiqued, and you have to critique others’ work to develop your own skills.
  2. Start a Bitbucket account.
  3. Try a Hack-a-Thon.
  4. Get a few freelance jobs.
  5. Try finding a programming internship, even if it’s for free.
  6. Volunteer your skills to keep developing them and to build your portfolio.
  7. Build your portfolio: have a place, like a website, where you post links to your projects, even if they link to your GitHub account.
  8. Find a Meetup, especially for those who are new to programming, and go and learn. Very importantly, network.
  9. Network! and I don’t mean it in the CS sense, but in the social sense.
  10. Don’t work in isolation.
  11. You’re never too old to switch careers (reassuring to me because I feel at 25, my life is half-over).