Skip to content

ECE491

ECE491/CS450 (Numerical Analysis) is a 3/4-credit-hour course that satisfies the Technical Electives requirement for ECE majors and statisfies an Advanced Computing Elective for CEs. It is offered in both Fall and Spring semesters.

Content Covered

Numerical Analysis is about using computers to solve mathematical problems that come up in all fields of science and engineering. Students will learn about many of the foundational algorithms along with their theoretical underpinnings. This class builds on itself the entire semester: it starts off with a brief introduction to floating-point arithmetic and the challenges it poses. Next it moves into numerical linear algebra: looking at solutions to linear systems, linear least-squares, and eigenvalue problems. Next, it covers nonlinear systems and nonlinear optimization. After that it moves on to interpolation (filling in the gaps in data sequences), after which it tackles numerical quadrature - numerically evaluating derivatives and integrals. Finally, the class looks at differential equations, covering initial value problems, boundary value problems, and partial differential equations. ECE491 is an introductory survey, so it covers a lot of material at a basic level, giving students a solid background to go wherever they want in scientific computing. This class has a lively pace and rarely gets boring, so it is a very enjoyable course, especially for students who are interested in an area of ECE/CS that requires any kind of numerical computation (signal processing, controls, communications, robotics, numerical circuit analysis, etc).

Prerequisites

The listed prerequisites are: CS101 or CS124; CS357 or MATH257, and MATH285. It is really a good idea to have taken these courses or their equivalents (such as ECE220 instead of CS124, MATH285, etc.) beforehand, especially MATH257. The material in CS450 builds upon many of foundational concepts in these prerequisite courses, so students would be at a significant disadvantage if they didn't come in with the proper background. This is one of the few ECE/CS courses that will revisit every MATH257 concept in some way, shape, or form. If a student doesn't have the required background but still wants to take a similar class, CS357 provides a much gentler introduction to a portion of the material covered in this class and doesn't require students to be familiar with linear algebra and differential equations. Also, CS357 is a relatively light class (not conceptually difficult, workload is grindy but not time-consuming) that can also satisfy an Advanced Computing Elective and Technical Elective credits.

When to Take It

ECE491 is a popular course for both advanced undergrads and beginning grad students and is offered every semester. There really isn't any other undergrad course that follows on to ECE491, so an undergrad who wants to take this class can take this class whenever it works best. However, this class opens up some research opportunities, so an undergrad interested in the area should take ECE491 earlier to give themselves the opportunity. Likewise, ECE491 is a great foundational course for grad students, so depending on a students specialization, they may want to take it sooner than later.

Course Structure

ECE491 has 7 homeworks that are assigned approximately every-other week. Each of these homeworks will have a handful of problems, and most of the problems involve the implementation and analysis of algorithms and concepts presented in class. The problems on the homework will either be written much like homeworks in previous math courses or will require you to implement a certain algorithm using the numpy and scipy libraries in Python. The homeworks can require some thought, and the time commitment can vary depending on the homework but generally they can take a substantial amount of time. The class has three exams, two midterms and a final that are taken in the CBTF. There are also short quizzes after each chapter taken online. All exams and quizzes are multiple choice and test a students conceptual and mechanical understanding of the ideas presented in class. They do not require a lot of messy math (that's what we have computers for, and why people take this class).

Instructors

In the spring, the course is taught by Professor Edgar Solomonik. In the fall, the course is taught by Professor Andreas Kloeckner.

Life After

As mentioned before, there are really no undergraduate courses that directly follow CS450. However, grad students and interested undergrads who want to dive further into numerics can take one of CS554: Parallel Numerical Algorithms, CS555: Numerical Methods for PDEs, CS556: Iterative and Multigrid Methods, or CS558: Topics in Numerical Analysis. Most students who take CS450 will probably not take these advanced courses, but many will be involved in jobs or research that uses scientific computing in some fashion - anything from simulating rockets at NASA to designing algorithms for highspeed trading on Wall Street.