AMSC 662 / CMSC 662 Computer Organization and Programming for Scientific Computing

Information for Fall 2013

Dianne P. O'Leary
Tentative schedule

New! 12/18: Final exam answers posted (typo in 8b corrected) and Final Grades posted. Have a wonderful break.

When and Where: TuTh...... 9:30am-10:45am (CSI 2107)

Dianne O'Leary's Office Hours: Tuesday 11:45-1:00, Friday 9:30-10:30, and by appointment, in AVW 3271. E-mail is welcome anytime!

Teaching assistant: Tyler Drombosky Office Hours: Monday 1-2pm and Wednesday 10-11am, CSS 3103. drombosk at math No office hours on Wed 11/27. Extra office hours Mon 11/25, 10-11am.

Final Exam: Tuesday December 17, 8-10am, usual classroom.

New! 12/02 Office hours during the week of December 16:

  • I'll hold office hours Monday, 11am-12:30pm. No office hours on Tuesday.
  • Tyler will hold office hours Monday, 1-2pm. This will be his final office hour.
  • I'll send email when grades are posted, probably on Thursday.
  • I'll hold office hours Friday, 9:30-10:30. You may see your final exam then, or later by appointment. (University policy is that I keep them for a year rather than returning them to you immediately.)
  • Topics: According to the rather dry catalog description: "This course presents fundamental issues of computer hardware, software, parallel computing, and scientific data management for programming for scientific computation."

    Prerequisites: AMSC/CMSC/MAPL 460, AMSC/CMSC/MAPL 466, or knowledge of basic numerical analysis and some programming experience.

    This course does not count toward the MS or PhD requirements for Computer Science majors. It is meant to be "Computer Science for Scientific Computing".

    This course is offered every two years.

    Textbook: Bryant and O'Hallaron Computer Systems: A Programmer's Perspective

    Programming language: Matlab will be assumed as a common language. Some assignments will require C, but detailed templates and complete instructions will be given.

    Grading: Based on homework (including programming projects), quizzes, and a final exam.

    What really happens: This course has three goals:

  • Present what a scientific computing person needs to know in order to write fast, accurate, and efficient software.

    In particular, we will:

  • (literally) Take a computer apart to see what is inside.
  • See what happens to your code between typing it and getting the results.
  • Discuss the influence of hardware components such as the memory bus and graphics units on speed.
  • Catalog and use data structures.
  • Give an introduction to parallel computing and a chance to write parallel programs.

  • Sprinkle in a few global issues that impact scientific computing:
  • Privacy and security.
  • Net neutrality.
  • Reproducibility of scientific computing results.
  • Open source / open access.
  • "Green computing" and programming for low power consumption.
  • Questions? Please contact me.

    Programming in C: For Homework 3 (and some later homeworks) you will need to use the gcc compiler. Here is the best information I can give you. Please let me know if you find better links or explanations.

  • gcc is available on the Grace machines (, where you have an account (with your UMD password as its password) because of your registration in this course; see information under "Resources" below.
  • gcc should be available on any Unix/Linux machine.
  • gcc may be available on other machines, too.
  • If not, gcc is "freely" available under the Gnu license. There are complete instructions for how to install it. The process is a bit complicated.
  • If your machine runs Windows, try these instructions or search the web for 'install gcc windows'.
  • For Apple computers, gcc is used in `Xcode Tools' and found in `Libcpp_kext'. Start here. If you find a better introduction, please let me know.
  • 2013 Homework

  • Homework 1:
  • Beware of plagiarism; put everything in your own words or, if absolutely necessary, use quotation marks and citations for direct quotations.
  • FAQs for Homework 1
  • Solution to Homework 1
  • Homework 2:
  • Pseudocode for the recursive version of AllSolve that we discussed in class is here . It may still have bugs. For your homework, you need to implement the nonrecursive version, as discussed in Problem 2.
  • FAQs for Homework 2
  • Solution to Homework 2
  • Homework 3
  • For help in installing gcc on your machine, see notes above.
  • Template code for Problem2.c
  • (Reposted 10/31 to correct bug) Tyler's version of AllSolve.m You may use either his or yours.
  • One of the functions used to grade Homework 2. Translate it to C and use it for your timings.
  • omp_timing.c Instructions on computing elapsed time in C. (The timing used in the in-class exercise on Sept 26 computed total time, not elapsed time.)
  • FAQs for Homework 3
  • Solution to Homework 3
  • Homework 4
  • FAQs for Homework 4
  • Solution to Homework 4
  • Homework 5
  • FAQs for Homework 5
  • Solution to Homework 5
  • Homework 6
  • cache.c
  • FAQs for Homework 6
  • Solution to Homework 6
  • Homework 7: Information on your in-class presentation and presentation schedule with links to posted slides.
  • 2013 Quizzes

  • Quiz 1: hints and questions and answers. Mean = 17, Median = 18.
  • Quiz 2: hints and questions and answers. Mean = 15, Median = 15.
  • Quiz 3: hints and questions and answers. Mean = 17, Median = 18.
  • Quiz 4: hints and questions and answers. Mean = 18, Median = 19.
  • Quiz 5: hints and questions and answers. Mean = 16, Median = 16.
  • Quiz 6: hints and questions and answers. Mean = 14, Median = 14.
  • Quiz 7: hints and questions and answers. Mean = 17, Median = 18.
  • Final Exam: hints and New! 12/17 questions and answers.
  • Resources:

  • Syllabus
  • Tentative schedule for the semester with links to lecture notes and readings
  • Practice Quizzes with answers
  • Survival Guide for Scientific Computing
  • UMCP Code of Academic Integrity
  • Information about computer accounts. See also the additional pointers at the bottom of notes by Larry Herman. For your assignments, you may use any machine that has the necessary software.
  • Accessing Matlab on the GRACE machines, with graphics. Helpful summary of things to know, from a student.
  • Sources for Matlab information:
  • Official Matlab documentation
  • Matlab Primer: 39 pages of basic information
  • Timothy A. Davis, Kermit Sigmon, Matlab Primer, CRC Press 2005. A 200 page version of the above reference.
  • D. J. Higham and N. J. Higham, Matlab Guide, SIAM Press 2005.
  • Read the code samples on the SCCS website (textbook for CMSC/AMSC 660).
  • How not to go about a programming assignment by Agustin Cernuda del Rio