CS323: Numerical Analysis and Computing¶
Welcome to CS 323! This course is an introduction to the broad field of numerical algorithms, optimization, and differential equations. Real-world examples from different fields such as computer vision, machine learning, and data analysis will be given alongside each topic to illustrate the wide applicability of the various methods discussed in class. This course is heavy on programming, with the aim of implementing most of the algorithms discussed in class. We will be using Python along with its scientific computing packages NumPy and SciPy. While there are many excellent resources available on the web, the following lecture notes are particularly recommended. Of course, we will be covering all the basics in class on an as needed basis. There is no required text for this course, although some recommendations are given below.
Email Policy: You are welcome to email the instructor about class-related issues. Please start your subject line with “CS 323:”. However, please do not always count on an immediate reply. Although most questions will be answered quickly, in the worst case you will receive a reply during (or shortly after) the instructors’ next scheduled office hours. It is also recommended to post homework-related questions on Piazza instead of emailing the instructor so that other fellow students can benefit from it.
Grading Policy: Grades will be awarded based on class participation, bi-weekly homeworks, two 75 minute in-class midterms and an optional final. The final grade will be computed as follows:
55% x (homework grade) + 20% x (midterm1) + 20% x (midterm2) + 5% x (class participation)
Final: The final exam will have two parts, the first part corresponding to the syllabus of midterm1, and the second part corresponding to the syllabus of midterm2. When computing your final grade, we will consider the best of the final and the corresponding midterm score. This means that you can choose to replace either your score for midterm1, or midterm2, or both by taking the final exam. However, if you do not perform well in the final, your previous midterm scores will be used. The dates/times for the midterm and final exams are listed below:
- Midterm 1:
- In-class Part (70%): 10/31 (5:15PM - 6:30PM)
- Take-home Programming Part (30%): 11/03 (12PM) - 11/05 (11:55PM)
Midterm 2: 12/05 (5:15PM - 6:30PM)
Final: 12/20 (12PM - 3PM)
The in-class part of the midterm exams constitutes for 70% of the midterm score, while the programming part constitutes for 30% of the midterm score. Please note that the midterm and final exams are open notes, but all such notes must be brought in printed form. The use of laptop computers, cell phones, tablets, and other hand-held electronic devices is strictly forbidden.
Class participation: Participation in class will be evaluated based on the number of classes attended, enthusiasm for answering the instructor’s questions, and willingness to help other students, both in person and also online in the discussion forum. Extra credit points can also be earned by helping the instructor improve his set of lecture notes. :-)
Homework: Students are encouraged to collaborate with each other on homework problems in teams of size at most 3. However, they must individually turn in their solutions and also mention the names of their collaborators on their homework. All homework should be typed, and no two people should collaborate with each other on more than two homeworks. We will not consider the lowest homework score when evaluating your final grade. Homework problems will be posted every second week on this webpage, and will be due at midnight on the Tuesday lecture two weeks later. Each student is also granted 3 late days total for submitting their homeworks. After this grace period has expired (either for the current homework or from previous homeworks) we will subtract 15% for each day that is delayed further.
Typing resources: All homework should be typed. Students can choose their favorite platform for typing out their homework, some commonly used softwares are Microsoft Word, LaTeX, and LyX. Thanks to a former student, Alex Ames, here is a LyX guide and associated source files used to generate it.
News and Announcements:¶
- (09/05) Discussion is now open on Piazza.
- (09/05) There is no recitation on Thursday (09/07).
- (09/19) Homework #1 is out. Due on (10/03).
- (10/03) Homework #2 is out. Due on (10/17).
- (10/19) Homework #1 Solutions have been posted.
- (10/19) Homework #3 is out. Due on (11/01).
- (10/24) Practice Midterm #1 has been posted.
- (10/24) Practice Midterm #1 Solutions have been posted.
- (10/30) Homework #2 Solutions have been posted.
- (10/31) Homework #4 is out. Due on (11/14).
- (11/01) Midterm #1 has been posted.
- (11/02) Midterm #1 Solutions have been posted.
- (11/03) Midterm #1 Programming is out. Due on (11/05).
- (11/13) Homework #3 Solutions have been posted.
- (11/14) Homework #5 is out. Due on (11/28).
- (11/27) Homework #4 Solutions have been posted.
- (11/29) Practice Midterm #2 has been posted.
- (11/30) Practice Midterm #2 Solutions have been posted.
- (12/06) Midterm #2 has been posted.
- (12/06) Midterm #2 Solutions have been posted.
- (12/12) Homework #5 Solutions have been posted.
Contents:¶
Coding Resources:¶
Recommended Books:¶
- J. Solomon, Numerical Algorithms, AK Peters/CRC Press, 2015.
- L. N. Trefethen and D. Bau III, Numerical Linear Algebra, SIAM, 1997.
- E. Matthes, Python Crash Course: A Hands-On, Project-Based Introduction to Programming, No Starch Press, 2015.