CMP201 Scientific Programming

    HOME     Course_Description    Syllabus   Course_Policies    Assignments     Exams     Resources     Errata    


In this course students learn computer programming in a high-level programming language, while using computer programming to explore mathematical concepts. Along with problem analysis, algorithm development, and the integration of numerical and graphical computation in the solution of problems, students use computer programming to explore a variety of mathematical concepts such as recursion and mathematical induction, Euclidean algorithm, limits, convergence of sequences and series, Monte Carlo simulation and estimation of probability using pseudorandom number generators. Prerequisite or Corequisite: MTH202 or equivalent.


To have students:
  • Learn and understand the nature of computer programming and its use in and relation to mathematics.
  • Learn to use programming to gain insight into areas of application, especially mathematics, but also the physical and life sciences, and economics.
  • Appreciate the importance of computer programming in the development and advancement of human civilization.
  • Learn the appropriate use of technology including how to use it and when to be skeptical of its results. Also to understand its inherent limitations.
  • Develop critical thinking and a basic understanding of logic essential for lifelong learning.


By successfully completing this course, students should be able to:
  • Explain the notion of an algorithm.
  • Explain and perform the process of designing and testing algorithms for the solution of problems, and translating the algorithms into MATLAB computer programs.
  • Explain the various sources of error including those due to logic, syntax, finite precision, translations between decimal and binary number systems.
  • Describe a rudimentary floating-point number system.
  • Use MATLAB as an interactive computational environment and as a high level programming language with a thorough understanding of the MATLAB language.
  • Use the MATLAB Desktop: Command, Directory, Workspace, and Editor/Debugger windows
  • Use MATLAB scalar variables to perform simple arithmetic computations
  • Use MATLAB strings
  • Explain basic matrix and array computations (add, subtract, multiply, and solve square linear systems using MATLAB.)
  • Write MATLAB scripts, which produce formatted output
  • Plot functions, polygons, and histograms
  • Write MATLAB scripts that use relational and logical operators in branches using if-else statements, and switch-case statements
  • Explain operator precedence
  • Recognize repetition in the solution of problems and mathematical formulas, and design algorithms and MATLAB scripts that employ for and while loops, and vectorization to handle the repetition.
  • Use MATLAB's built-in functions and write their own functions
  • Explain the notion of variable scope (i.e., local versus global)
  • Explain how data is passed to MATLAB functions
  • Design both iterative and recursive algorithms for problems, when possible.
  • Implement recursive algorithms as recursive MATLAB functions.
  • Employ proof by mathematical induction to "prove" the validity of recursive functions.
  • Write MATLAB scripts and functions that estimate probabilities via simulation employing pseudo-random number generators
  • Write MATLAB scripts and functions that estimate definite integrals via Monte Carlo simulations, and numerical quadrature
  • Design MATLAB scripts and functions to explore mathematical conjectures inclduing those involving infinite sequences and series, and infinite products
  • Understand the basic ideas behind computational efficiency.
  • Explain and write programs to: solve of nonlinear systems, differentiate, numerically integrate, solve linear systems, and perform various statistical computations, solve initial value problems.
  • Explain computational complexity of linear and binary search algorithms (if time permits)
  • Explain computational complexity of selected sorting algorithms (if time permits)


This course supports the mission of the university as follows: "...through teaching ... prepares men and women for responsible lives by imparting and expanding knowledge, developing skills, and cultivating enduring values. ... students develop their abilities for thinking clearly and creatively, enhance their capacity for sound judgment, and prepare for the challenge of learning throughout their lives."


MTH196 or equivalent (may be taken concurrently).


  • Secion 01 : Course meeting time/place: Tuesday and Thursday, 12:30 P.M. - 1:45 P.M. Location: O'Hare 219.


  • MATLAB Student Edition.


  • USB Flash Drive.


Lecture, question and answer, readings, homework exercises, in-class group activities.


This web site is designed to, among other things, make it clear what is expected from you and what you can expect from the course and from me. This course will be challenging; it is fast-paced, it requires a great deal of meticulous attention to detail as well as imagination and creativity, and just about everything in it depends on your understanding of everything else in the course that preceded it. Nevertheless, if you work hard, do not allow yourself to fall behind, and seek help when you need it, you should be successful in this course.

Reading assignments and homework problems for nearly each class meeting are posted on the course web site. It is your responsibility to check the web site frequently (i.e., at least once a day) for the homework. It is extremely important that you complete the reading assignments and try the homework problems before the following class meeting.

Click to send me email.
Last modified: 1/21/2020