Discuss this class on Slack!
Modern embedded systems programming starts with the hardware and extends all the way to the cloud. The resulting myriad of programming languages, libraries, tools, data structures, and algorithms may seem difficult for any one programmer to master. In this course, we introduce the fundamentals of programming languages and software engineering common to all levels of embedded systems programming, giving students the conceptual tools they need to tackle any project.
Specifically, this course takes a detailed look at two programming languages, C++ and Javascript; teaches students how to use build tools, version control, and advanced editors; describes how to use and create software libraries; and ties everything together with a collaborative software engineering project.
Lectures: Thurs 6pm - 9pm Homework: Due ~ Wednesdays @ 11:59pm Instructor: Prof. Eric Klavins. Office hour: Thursdays from 5-6pm in CSE Room 236. Teaching Assistant: Tileli Amimeur - [email protected] - OH: Mon 5-6pm in MOL 3rd floor (enter on the ground floor and use the stairs)
- Week 1 (9/29): Build Environment, Fundamentals of the C Programming Language, Version control
- Week 2 (10/6): Pointers, structures, unions, the C preprocessor, io, and building APIs. Matrix library
- Week 3 (10/13): Debugging C programs, Fundamentals of C++. Matrix libaray in C++
- Week 4 (10/20): Building an object oriented library in C++. JSON example
- Week 5 (10/27): Tokenizing and parsing
- Week 6 (11/3): Fundamentals of Javascript
- Week 7 (11/10): Clients, servers, and AWS
- Week 8 (11/17): Javascript interface to C++
- Week 9 (11/24): Thanksgiving, no class!
- Week 10 (12/1): TBA
- Week 11 (12/8): TBA
Homework will be assigned weekly, and will be due the following Wednesday. Homework will be submitted by pushing your code and other materials to a github repository. We will clone your code and attempt to run it and grade it base on functionality, completeness, and style.
Detailed assignments are listed on the wiki.
- We will be using Github for version controlling all of our code. Make a user name and get the Student Pack so you can use various resources for free.
- Please use the Atom Editor to edit your code.
-
The git book. https://git-scm.com/book/en/v2.
-
Kerninghan and Ritchie, C Programming, 2nd Edition, https://hassanolity.files.wordpress.com/2013/11/the_c_programming_language_2.pdf.
-
GNU Make. https://www.gnu.org/software/make/manual/make.html#Introduction.
-
Robert Lafore, Object-Oriented Programming in C++, http://fac.ksu.edu.sa/sites/default/files/ObjectOrientedProgramminginC4thEdition.pdf.