ECE 2035
ECE 2035, formally known as Programming for Hardware and Software Systems, is the second half of the content covered in CS 2110, presented from an engineering point of view. It is required for all computer engineering majors and an option for electrical engineering majors. Students will learn the MIPS instruction set and C programming, as well as memory management, and apply this knowledge through projects.
Topic List[edit | edit source]
- Introduction to assembly programming in MIPS, loading and storing words, logical functions, loops
- Introduction to C, branching statements, loops
- 2D and 3D arrays
- Data alignment in memory
- Pointers
- Activation Frames, Stack Memory management
- Linked lists and hashmaps
- Heap memory, malloc and free
- Garbage collection
- Introduction to compilers and compiler optimizations
- Introduction to embedded system programming and game design, troubleshooting, unit testing
Class Structure[edit | edit source]
ECE 2035 is a mostly project-based class, though students will have early homeworks designed to guide them to learn how to program in MIPS assembly and C. Two major projects define this course, and much of the lecture content will focus on leading into these projects. The first is an assembly optimization project focused on an algorithm where the goal changes each semester. The second project is a game built on an embedded system where students will use data structures to create a game in C.
Workload[edit | edit source]
ECE 2035 has a varying amount of work each week. Once the class reaches the projects, the class becomes much more difficult and time consuming, especially since students will have exams alongside major project due dates. The final project is notorious for students trying to pull all nighters and it is heavily encouraged to start early. Expect 2035 to be a true 4 credit class on average, expecting 10-12 hours a week at minimum
Prerequisite Knowledge[edit | edit source]
ECE 2020, mainly the knowledge of the datapath, which is reviewed at the beginning of 2035.
Future Outlook[edit | edit source]
ECE 2035, along with ECE 2031, are prerequisites to ECE 3058, and is thus a very important class to have completed by early second year, as ECE 3058 is a gateway to many thread requirements.
In addition, several computer engineering thread options are unlocked with the completion of ECE 2035, such as ECE 4122 (Advanced Programming Techniques) and ECE 4117 (Introduction to Malware Reverse Engineering).
Registration[edit | edit source]
ECE 2035 requires a lab component to be registered for, however, there is no scheduled lab block.
Equivalent Courses[edit | edit source]
CS 2110 will cover the same concepts as ECE 2035, and electrical engineering majors will have the option to take ECE 2036 instead of ECE 2035