# Computation Lab I (TDEC 160)

Announcements  Labs  Programs  Course Resources  Grading Policy
Course Description
Introduces computation and programming through the use of a symbolic mathematical computation system.  Programming techniques and and algorithmic problem solving are introduced in the context of the differential calculus.  Illustrates the power and limitations of the computer in solving mathematical problems.
Course Goals
To provide students with the skills to effectively use a symbolic mathematical system to solve mathematical problems and to introduce students to programming and algorithmic thinking.  To reinforce concepts from mathematics by presenting them in an algorithmic and computational manner and to learn concepts from Computer Science in the context of mathematical computation.

Course Objectives
• To be able to use a symbolic mathematical system to perform routine mathematical computations.
• To be able to use programming constructs to accomplish tasks and to automate sequences of computations that would be laborious to do manually.
• To be able to conceive and implement algorithms to solve problems.
• To use the computer to experiment with mathematical concepts and to form conjectures.
• To view calculus from a computational point of view.
Audience
This is a required freshman level course for all engineering and computer science students.
Corequisites
Should be taken concurrently with or following calculus I (TDEC 110 or MATH 121)
Instructor
Jeremy Johnson
Office: 100 University Crossings
phone: (215) 895-2669
e-mail: jjohnson@cs.drexel.edu
office hours:  TR 11-12:30.  Additional hours available upon request (via email).
TAs
Servesh Tiwari
Office: 147 Univ. Crossings (CS Student Resource Center)
e-mail: st86@drexel.edu
office hours: M 1-3.

Meeting Time
W 10-12 (Univ. Crossings 150), 12-2 (Univ. Crossings 149), 2-4 (Univ. Crossings 149)

Course Web Page and Mailing List

Textbook

All students should have a copy of Maple 10 (free with Calculus book).  Instead of a text book, this course will rely on Maple documentation and course notes/labs provided as Maple worksheets (see class web page)

### Topics

1. The use of maple (interface, symbolic computation, numeric computation, graphics, and an interactive programming environment).
2. Experimental mathematics (properties of sequences, equations, and functions)
3. Algorithmic mathematics (differentiation and equation solving)
4. Elementary programming constructs (variables, loops, conditionals,  functions)
5. Elementary data structures (sequences, lists, sets, trees)

1. Weekly labs (80%)
2. Exam - (20%) - exams will be done in lab using Maple.

### Resources

Reference Books
1. Charles F. van Loan, Introduction to Scientific Computing, 2nd Ed., Prentice Hall, 2000.
Web Pages
1. TBA

### Look Here for Important Announcements

Announcements ( )

### Labs

This list is subject to change.
• Lab 1 on Wed. Oct. 5 and Wed. Oct. 12:  Drawing lines - A slippery slope (download Maple worksheet - lab1.mw)
• Introduction to Maple (reviews High School algebra using Maple).  Introduces plotting and equation solving.  Students will use Maple to determine a line given two distinct points, interpolate a quadratic through three points, and find the best line going through a collection of points scattered about a line.  Discussion will introduce interpolation and least squares.
• Reviews high school algebra using Maple (quadratic equation and complex numbers). Students will investigate which quadratic equations have real roots and will empirically compute the probability that a random quadratic equation has real roots. The empirical investigation will require students to write small Maple scripts (programming with loops and conditionals). Beyond the introduction to programming the lab will attempt to convey the spirit of using Maple in particular and computers in general to perform empirical studies. Discussion will introduce polynomial root finding and solvability of polynomial equations.
• No Lab on Wed. Oct. 26 (Lab 2 must be submitted by this day)
• Lab 3 on Wed. Nov. 2 and Nov. 9: Big Oh No - Sequences and limits (download Maple worksheet - lab3.mw)
• Reviews the concept of limit using Maple. Utilizes sequences and user defined functions, and introduces recursive functions. Discusses symbolic and numeric limits. Students will investigate the Fibonacci sequence (will discover the Fibonacci sequence solving an algorithmic problem and will investigate various properties of the Fibonacci numbers and programs to compute them). Discussion will introduce computing time analysis and asymptotic growth rates.
• Lab 4 on Wed. Nov. 16: Newton's Method - Descending the curve (download Maple worksheet - lab4.mw)
• Presents several ways of thinking about functions (Expressions, Black Boxes, and White Boxes) and shows how to use Maple to compute derivatives of functions using the different ways of representing functions (Maple's diff command and numeric differentiation). Armed with the derivative Newton's method for approximating the roots of an equation is introduced. Students will use Newton's method to approximate sqrt(2) to very high accuracy. Discussion introduces concept of rate of convergence and error in numeric computation.
• Lab 5 on Wed. Nov. 30: A program to differentiate and differentiating programs (download Maple worksheet - lab5.mw)
• Reviews properties of the derivative: linearity, product and quotient rule, chain rule. Students will use these properties write a program to differentiate an expression, stored in a data structure called an expression tree. Recursion provides a simple and elegant solution approach to writing such a program. Students will also be introduced to automatic differentiation (a program that is given a program to compute a function and returns a program that computes the derivative of the function). Discussion introduces the notion of programs writing programs.
This lab provides a culmination for the course and provides a framework for summarizing the content of the first term of calculus.
• Final Maple quiz on Wed. Dec. 7.

### Programs and Worksheets

Created: 7/20/05 (revised 10/25/05) by jjohnson@cs.drexel.edu