CS 3420 - Embedded Systems

General Information

You will have to take either this course, or CS 3410 - Computer System Organization and Programming. Generally, people who have taken ECE 2300 will take this course instead of 3410. You learn the basics of how high level code can be expressed through assembly, and relevant topics such as concurrency, stacks, interrupts, etc.


ECE 2300 - Digital Logic and Computer Organization

This is strongly encouraged, as basic knowledge of CPU functionality will be assumed.

Topics Covered

  • Assembly language programming (ARM)
  • Interrupts and I/O
  • Managing interrupts: Concurrency
  • Concurrency models
  • Tasks/threads
  • Synchronization
  • Real-time constraints and scheduling
  • Communication
  • Data conversion
  • Case studies


Labs consist of implementing certain concepts in C or ARM Assembly using uVision, and testing them on a physical board. Homeworks are short, and are generally questions explicitly on lecture material.

Overall workload is moderate, although debugging the labs can be tedious. Make use of office hours and TAs, they will generally cut down your debugging time by an order of magnitude.

There were only a few homeworks and 5-6 labs.

General Advice

Don’t wait to do your labs!

The labs and lectures go very hand in hand; if you finish your lab early, make sure that all of your implementation matches up with what you were taught in lecture! This caught a lot of people off guard for the first couple labs.


Spring 2015 - Taught by Prof. Jose Martinez. Great lecturer, may be the best I’ve had. He’s actually holds 2-3 degrees in CS and half or more of the class is CS majors so its a great introduction to lower level programming taught by someone who knows just about anything you think of in the subject.

Took it with Martinez too. Class wasn’t too much work at all, there are roughly weekly quizzes, two prelims, a final project and no final exam. The only problem was that there were really sparse lecture notes, so you had to pay close attention in class/videonotes and also write good notes to do well.

Videonotes are a lifesaver. Martinez is the best professor I have had at Cornell and his lectures are very engaging. Make sure to participate a lot in class and ask questions when they come up, as he is very good at addressing student inquiries. It is a shame that no other semesters will have Skand as the head TA ):

Spring 2016 - Taught by Prof. Edward Suh. His lecturing skills are not great and quite frankly boring. I found myself learning everything through Martinez’s recorded lecture videos.

Past Offerings

Semester Time Professor Median Grade Course Page
Spring 2010 - Douglas Long B+ -
Spring 2012 - Rajit Manohar - http://www.csl.cornell.edu/courses/ece3140/ (link is broken)
Spring 2014 - José F. Martínez B -
Spring 2015 - José F. Martínez B -
Spring 2016 - Edward Suh - -
Spring 2017 - Edward Suh B -
Spring 2018 - Edward Suh - -


If you can hack the server then this is almost the best resource you can get http://www.csl.cornell.edu/courses/ece3140/

Textbook: http://www.sciencedirect.com/science/book/9780750682763

Edit this page on Github: classes/CS3420.md

Edit me on GitHub