CU Boulder: CSCI 3656 (Spring 2018)
Meeting Time: TR 12:30-1:45pm in FLMG 156
Office Hours: Mon/Fri 10-11am, Tue/Thu 2-3:15pm, or by appointment.
Covers development, computer implementation, and analysis of numerical methods for applied mathematical problems. Topics include floating point arithmetic, numerical solution of linear systems of equations, root finding, numerical interpolation, differentiation, and integration.
Core option for Computer Science BS and BA students.
Required prerequisites (all minimum grade C-):
- Introductory programming: CSCI 1300 or CSCI 1310 or CSCI 1320 or ECEN 1310
- Calculus 2: APPM 1360 or MATH 2300
- Linear Algebra: CSCI 2820 or MATH 2130 or APPM 2360 or APPM 3310
Upon completion of this class, students possess:
- Choice: an ability to choose appropriate numerical methods for solving mathematical models arising in science and engineering
- Critique: an understanding of the merits and limitations of those numerical methods
- Tradeoffs: an understanding of accuracy vs cost tradeoffs in the key algorithms of continuous mathematics
- Creation: an ability to write effective numerical programs, taking into account stability, accuracy, and cost
- Software: familiarity with numerical libraries that provide production-grade implementations of state of the art numerical methods
- Numerical solution of equations in one variable (rootfinding)
- Stability of numerical algorithms
- Conditioning of physical problems and mathematical formulations
- Numerical linear algebra
- Solving nonlinear algebraic systems of equations
- Numerical differentiation
- Numerical integration
- Numerical solution of ordinary differential equations
20% Moodle quizzes -- short multiple choice quizzes to gauge understanding at least weekly
80% Competencies: The remaining 80% is allocated to demonstrated competency (in the sense of the Outcomes above) for the topics within Scope. Each assessment (homework or exam question) will combine one or more competency type with one or more topic. You will be expected to demonstrate competency on each topic at least once in a homework setting and at least once in an exam setting. Since some people work better in one environment or the other, your higher competency rating (whether it be homework or exam) will be worth 2/3 of the points for that topic. There will be about 10 homework assignments that will involve coding, numerical experiments, and conceptual questions.
Exams will be cumulative so you can demonstrate competency on a topic that appeared in the first midterm when you take the second midterm, but you may run out of time if you have many competencies to make up. Exams will be open neighbor/open internet.
- Midterm 1: February 22
- Midterm 2: April 12
- Final exam
Homework assignments will be submitted via Git. Start by forking the class repository. You can make your fork private, but please ensure that the
csci-3656 group has access. You will complete assignments using Jupyter notebooks which is available in the VM (see below) or can be installed natively on most operating systems.
It is notoriously difficult to predict the time required to produce quality code, so please start early to give yourself plenty of time. You are encouraged to work together on all assignments, but must give credit to collaborators (at the top of each notebook). You should ensure that each assignment contains some significant intellectual contribution of your own.
Programming languages and environment
I will use Python with Jupyter notebooks in class and for homeworks. This environment is convenient to work with, general purpose, and has extensive library support. Native Python code is not high performance, however. Production numerical software is most frequently written in C, C++, or Fortran, perhaps called from a higher level programming language like Python. MATLAB is also popular for numerical computing, though it is a proprietary environment and lacks general-purpose libraries. Octave is a free MATLAB clone and Julia is a modern language that preserves much of the syntactic convenience.
Most HPC facilities use a Linux operating system. You can use any environment for your local development environment, but the CS virtual machine is recommended if you encounter problems. You can also use Azure Notebooks and log in using your CU credentials.
Moodle will be used to maintain grades and as a discussion forum.
This course will follow a collection of Jupyter notebooks. The notebooks are intended to be self-contained. There is no required textbook, but the following resources may be helpful.
- Greenbaum and Chartier (2012), Numerical Methods Design, Analysis, and Computer Implementation of Algorithms -- an excellent, comprehensive book.
- Sauer (2012), Numerical Analysis -- used for this course in other semesters.
- Trefethen and Bau (1997), Numerical Linear Algebra -- fantastic, but limited to numerical linear algebra and covers more advanced topics.
- Eijkhout (2017), Introduction to High-Performance Scientific Computing -- includes introductory numerical linear algebra from a performance standpoint; free PDF.
- Scopatz and Huff (2015), Effective Computation in Physics -- Python language, data science workflow, and computation.
A SIAM Membership is free for CU students and provides a 30% discount on SIAM books.
If you qualify for accommodations because of a disability, please submit to your professor a letter from Disability Services in a timely manner (for exam accommodations provide your letter at least one week prior to the exam) so that your needs can be addressed. Disability Services determines accommodations based on documented disabilities. Contact Disability Services at 303-492-8671 or by e-mail at email@example.com. If you have a temporary medical condition or injury, see the Temporary Injuries guidelines under the Quick Links at the Disability Services website and discuss your needs with your professor.
Campus policy regarding religious observances requires that faculty make every effort to deal reasonably and fairly with all students who, because of religious obligations, have conflicts with scheduled exams, assignments or required assignments/attendance. If this applies to you, please speak with me directly as soon as possible at the beginning of the term. See the campus policy regarding religious observances for full details.
Students and faculty each have responsibility for maintaining an appropriate learning environment. Those who fail to adhere to such behavioral standards may be subject to discipline. Professional courtesy and sensitivity are especially important with respect to individuals and topics dealing with differences of race, color, culture, religion, creed, politics, veteran's status, sexual orientation, gender, gender identity and gender expression, age, disability,and nationalities. Class rosters are provided to the instructor with the student's legal name. I will gladly honor your request to address you by an alternate name or gender pronoun. Please advise me of this preference early in the semester so that I may make appropriate changes to my records. For more information, see the policies on classroom behavior and the student code.
Discrimination and Harassment
The University of Colorado Boulder (CU Boulder) is committed to maintaining a positive learning, working, and living environment. CU Boulder will not tolerate acts of sexual misconduct, discrimination, harassment or related retaliation against or by any employee or student. CU's Sexual Misconduct Policy prohibits sexual assault, sexual exploitation, sexual harassment,intimate partner abuse (dating or domestic violence), stalking or related retaliation. CU Boulder's Discrimination and Harassment Policy prohibits discrimination, harassment or related retaliation based on race, color,national origin, sex, pregnancy, age, disability, creed, religion, sexual orientation, gender identity, gender expression, veteran status, political affiliation or political philosophy. Individuals who believe they have been subject to misconduct under either policy should contact the Office of Institutional Equity and Compliance (OIEC) at 303-492-2127. Information about the OIEC, the above referenced policies, and the campus resources available to assist individuals regarding sexual misconduct, discrimination, harassment or related retaliation can be found at the OIEC website.
All students enrolled in a University of Colorado Boulder course are responsible for knowing and adhering to the academic integrity policy of the institution. Violations of the policy may include: plagiarism, cheating,fabrication, lying, bribery, threat, unauthorized access, clicker fraud,resubmission, and aiding academic dishonesty. All incidents of academic misconduct will be reported to the Honor Code Council (firstname.lastname@example.org; 303-735-2273). Students who are found responsible for violating the academic integrity policy will be subject to nonacademic sanctions from the Honor Code Council as well as academic sanctions from the faculty member. Additional information regarding the academic integrity policy can be found at http://honorcode.colorado.edu.
- Teacher: Jed Kallen-Brown