ECE220
ECE220 (Computer Systems & Programming) is a 4 credit hour course that is specifically required for all ECE majors as part of the Electrical and Computer Engineering Core Curriculum. It is offered in the fall, spring, and summer semesters.
Content Covered
- LC-3 Assembly Language
- C programming
- Runtime Stack
- C to LC-3 Translation.
- Functions
- Input/Output
- Pointers
- Arrays
- Recursion
- Basic Data Structures
- Basic C++ programming
ECE220 is meant to be a first-time introduction to higher level programming languages like C and C++. It is meant to prepare students for classes like CS225 and ECE391 where a solid programming foundation is necessary. The first part of the course expands upon low-level LC-3 programming taught in ECE120. This covers TRAPs, interrupts, I/O, and calling conventions, all of which is also covered in ECE391.
ECE220 then moves on to teaching C programming, often referencing LC-3. Students learn about pointers, recursion, arrays, memory management, and other fundamental computer programming concepts. The course also covers some simple data structures, such as binary search trees, linked lists, and dynamic arrrays. Most of the data structure content is meant to prepare students for CS225, where it will be covered in much more detail. Several basic sorting algorithms are also covered in the course.
At the very end of the course, the class breifly touches on C++ and object-oriented design patterns, such as inheritance.
Prerequisites
ECE120 - Introduction to Computing is the only listed official prerequisite for this course. ECE120 will be necessary for the start of the course, where LC-3 programming is heavily emphasized on quizzes and MPs. However, the course will start to shift to mainly C and C++ programming, which will make up the majority of the course. Students may struggle in this course if they have not done programming before. Having done programming in highschool or taken courses like CS124 or CS128 can help reduce the learning curve. All programming concepts are built from the ground-up, so it is still possible to do well if students put in the time to learn concepts they may not know yet.
When to Take It
Computer Engineering students should aim to take this course immediatley after they take ECE 120, for most students, this will be in their second semester of freshman year. ECE 220 is required for various other courses in the computer engineering curriculum.
Course Structure
ECE220 can have a heavy workload depending on how students manage their time.
ECE220 has multiple quizzes, held at the CBTF in between midterm exams. To prepare for these quizzes, students are recommended to go over past MPs and lecture material. Quizzes will consist of free-response auto-graded coding questions in either LC-3, C, or C++. They will typically be extremely similar to the topics covered in lectures in the past week or algorithms written in MPs.
Note that the course structure of ECE220 often varies slightly from semester to semester. For the most up to date information, view the syllabus or the course website.
Instructors
This class is taught by a variety of professors, most recently these have included Yuting Wu Chen, Ivan Thomas Abraham, and Volodymr Kindratenko.
Course Tips
ECE 220 can be a difficult course for those that have not programmed before. Going to lectures, labs, and office hours, can all help if you are confused about content at any point. Do the extra credit offered for labs, previously they have been worth over an entire MPs worth of credit, and they are not hard to do. Learn how to use GDB and the command line well now, especially if you are a CompE, you will use them much more in later classes.
Life After
Students who enjoyed the first parts of ECE220 (Interrupts, I/O, Assembly / C Programming) will enjoy ECE391, as it covers most of the same things, but in much greater detail, with more interesting programming projects, and with real examples (x86 and the Linux Kernel instead of LC3).
Students who enjoyed the later parts of ECE220 (Data Structures, Recursion, C++ Programming) will enjoy CS225, as it covers most of the same things, but in much greater detail. Because of the overlap in topics,
Taking ECE220 opens up some higher level courses such as ECE408 - Applied Parallel Programming, or CS 431 - Embedded Systems to highly motivated undergrads. If you liked translating C to LC3, look into CS 426 - Compiler Construction. Keep in mind you need to have completed your junior eligibility requirements first.
Infamous Topics
- C to LC3: Use compiler explorer! or read the textbook!
- Runtime Stack: Use compiler explorer! or read the textbook!
- Pointers: Pointers can be confusing to beginner programmers, however they are fundamental to understanding how computers work, and will be used alot in other required classes (CS 225, ECE 391).
- Memory Management: Dynamic memory management is confusing, you will deal with this more in CS 225.
- Strings: Strings are a great way to benchmark your understanding of C programming, if you can understand strings and their underlying implementation well, chances are you doing well in the course.
- C++: The C++ section of the course is taught very fast and can be confusing. Good luck!