Syllabus
Lecture and section information
CS 4220/CS 5223/MATH 4260, Spring 2017
Lecture time: MWF 2:30-3:20
Lecture location: Gates G01
Staff and office hours
Prof: David Bindel
425 Gates Hall
Phone: 607-255-5395
E-mail:
TA: David Eriksson
E-mail:
Catalog description
4 credits. Introduction to the fundamentals of numerical linear algebra: direct and iterative methods for linear systems, eigenvalue problems, singular value decomposition. In the second half of the course, the above are used to build iterative methods for nonlinear systems and for multivariate optimization. Strong emphasis is placed on understanding the advantages, disadvantages, and limits of applicability for all the covered techniques. Computer programming is required to test the theoretical concepts throughout the course.
Prerequisites
Linear algebra at the level of MATH 2210 or 2940 or equivalent and a CS 1 course in any language. We will assume you remember your calculus and can pick up MATLAB or Julia. Recommended but not essential: one additional mathematics course numbered 3000 or above. This course can be taken before or after CS 4210/MATH 4250.
Texts
Required text
- Ascher and Greif, A First Course in Numerical Methods (etext)
We will cover roughly chapters 1-9.
References
Some linear algebra references:
- Meyer, Matrix Analysis and Applied Linear Algebra
- Lay, Linear Algebra and its Applications
- Strang, Linear Algebra and its Applications
- Strang’s excellent online course is here
Some MATLAB references:
- Moler, Numerical Computing with MATLAB
- Van Loan and Fan, Insight Through Computing: A Matlab Introduction to Computational Science and Engineering
- Pratap, Getting Started with MATLAB 7
- Gilat, MATLAB: An Introduction with Applications
- Hanselman and Littlefield, Mastering MATLAB7
- Or pick a favorite from the many available
The Julia language home page has many pointers to using the Julia programming language; see in particular the learning link at the top of the home page.
Course work
Readings and the problem du jour
Readings from the course text (or notes) will be listed on the course page before class. You are responsible for reading before lecture.
For most lectures, there will be a “problem of the day” related to the class material. These problems are not graded, but you should try them (and try to understand them) as a way to better learn the material – and as a way to study for the exams.
Participation and feedback
Your participation makes the class more interesting and useful for all of us. There are several ways to participate:
- Answering questions in class
- Actively engaging and answering questions on Piazza
- Helping correct and clarify class notes and assignments
It is also critical for us to have your feedback about how the class is going, both to improve the class for the current semester and to make the class better for future semesters. We will solicit non-anonymous comments around the midterm, and at the end of the semester will check with the college to see who has completed course evaluation surveys (though we obviously cannot check to see whether your feedback is useful!). Participating in these feedback activities counts toward your grade.
Together, participation and feedback counts for the equivalent of one homework.
Homework and projects
There will be six one-week homeworks, assigned Friday and due the following Friday. These problems will involve a mix of short answers, plots, and computations done in MATLAB or Julia. Homework should be typed and submitted as PDF files on CMS. After they are graded, homework scores will be posted to CMS. Regrade requests must be submitted within one week of receiving the graded homework.
There will be three two-week programming projects, to be done either alone or in a group of two. Projects will involve solving a larger problem, and may be done in MATLAB or Julia. For projects, you will need to submit both codes and a writeup PDF file on CMS.
In order to provide timely, high-quality feedback, we may not always grade all problems in a homework or pieces to a project. Instead, we will focus our grading efforts on providing feedback on a few key points. We will provide written solutions so that you can evaluate yourself for problems where we do not grade in detail.
Exams
There will be one midterm and one final exam:
- Midterm: March 6-10
- Final Exam: TBA
Both exams are take home.
Grading
Your final grade in CS 4220 will be computed from grades on the assignments and exams using the following weights:
- Participation: 5%
- Homework: 6% times 5 homeworks (best of 6)
- Projects: 10% times 3 projects
- Midterm: 15%
- Final: 20%
Course policies
Late work policy
Unless otherwise stated, all work is due by 11:59 pm on the due date. All homework and projects should be submitted via the course management system (CMS); you are encouraged to submit early versions, since resubmissions up to the deadline are counted without penalty. For each assignment, up to three “slip days” are allowed. Over the semester, you may use a total of six slip days. You may not use slip days for the take-home midterm.
Collaboration
An assignment is an academic document, like a journal article. When you turn it in, you are claiming everything in it is your original work, unless you cite a source for it.
You are welcome to discuss homework and projects among yourselves in general terms. However, you should not look at code or writeups from other students, or allow other students to see your code or writeup, even if the general solution was worked out together. Unless we explicitly allow it on an assignment, we will not credit code or writeups that are shared between students (or teams, in the case of projects).
If you get an idea from a classmate, the TA, a book or other published source, or elsewhere, please provide an appropriate citation. This is not only critical to maintaining academic integrity, but it is also an important way for you to give credit to those who have helped you out. When in doubt, cite! Code or writeups with appropriate citations will never be considered a violation of academic integrity in this class (though you will not receive credit for code or writeups that were shared when you should have done them yourself).
Academic Integrity
We expect academic integrity from everyone. School is stressful, and you may feel pressure from your coursework or other factors, but that is no reason for dishonesty! If you feel you can’t complete the work on the own, come talk to the professor, the TA, or your advisor, and we can help you figure out what to do.
For more information, see Cornell’s Code of Academic Integrity.
Emergency procedures
In the event of a major campus emergency, course requirements, deadlines, and grading percentages are subject to changes that may be necessitated by a revised semester calendar or other circumstances. Any such announcements will be posted to the course home page.