Description: An introduction to computer programming with a focus on the solution of mathematical and scientific problems. Basic programming concepts such as variables, statements, loops, branches, functions, data types, and object orientation. Mathematical/scientific tools such as arrays, floating point numbers, plotting, symbolic algebra, and various packages. Examples from a wide range of mathematical applications such as evaluation of complex algebraic expressions, number theory, combinatorics, statistical analysis, efficient algorithms, computational geometry, Fourier analysis, and optimization. Mainly based on the Julia and the Mathematica programming languages.
Prerequisites: Math 53, 54, 55, or permission from instructor.
Lectures: TuTh 12:30pm - 2:00pm, room 2 LeConte.
Lecturer: Per-Olof Persson, persson@berkeley.edu, 1081 Evans, Phone (510) 642-6947.
Office hours: Mon 10:00am - 11:30am and Wed 2:30pm - 4:00pm in 1081 Evans.
Exams:
Midterm exam: Tue Apr 7, 12:30pm - 2:00pm
Final exam: Thu May 14, 3:00pm - 6:00pm
By generous support from the Division of Data Sciences, we have access to cloud-based Julia server based on Jupyter notebooks in a browser. Visit https://julia.datahub.berkeley.edu and sign in using your CalNet ID.
See the official Jupyter Notebook documentation to get started using notebooks. Here is a good keyboard shortcut cheat sheet, here is a markdown cheat sheet, and here are details of how to write mathematics using LaTeX syntax.
If you would like to install Julia on your own laptop, download the latest stable version at https://julialang.org. Optionally, you can also install Atom Editor and the Juno IDE. A step-by-step instruction for PC Windows is available here.
Lec | Date | Topic | Notes | Other readings |
---|---|---|---|---|
1 | Tu 1/21 | Introduction, basic Julia operations | 1.1 | Think: 1,2 |
2 | Th 1/23 | Variables, expressions, functions, loops | 1.2-1.4 | Think: 3,6 |
3 | Tu 1/28 | Conditional statements, iteration | 1.5-1.7 | Think: 5,7 |
4 | Th 1/30 | Arrays | 2 | Think: 10 |
5 | Tu 2/04 | Plotting, the PyPlot package | 3 | PyPlot |
6 | Th 2/06 | Random number and Monte Carlo simulation | 4 | Insight: 6 |
7 | Tu 2/11 | More on arrays, vectorization | 5 | Julia: 26.1-8 |
8 | Th 2/13 | Rational and complex numbers, higher precision | 6 | Julia: 13 |
9 | Tu 2/18 | Recursion, divide-and-conquer algorithms | 7 | Insight: 14 |
10 | Th 2/20 | Matrix operations, linear algebra | 8 | Julia: 79 |
11 | Tu 2/25 | Strings | 9.1-9.2 | Think: 8, Julia: 14 |
12 | Th 2/27 | Floating-point arithmetics | FPslides, FPdemo | |
13 | Tu 3/03 | Markdown, LaTeX | MD, LX1, LX2 | |
14 | Th 3/05 | Review | ||
15 | Tu 3/10 | File processing | 9.3 | Think: 11,14 |
16 | Th 3/12 | Computational geometry | 11 | |
17 | Tu 3/17 | Differential equations, dynamical systems | 13 | |
18 | Th 3/19 | Review | ||
Tu 3/24 | Spring Break - No lecture | |||
Th 3/26 | Spring Break - No lecture | |||
19 | Tu 3/31 | Image processing algorithms | 12 | Insight: 12 |
20 | Th 4/02 | Data types, object orientation | 10 | Think: 15-17 |
21 | Tu 4/07 | Midterm exam | ||
22 | Th 4/09 | Optimization, packages and applications | 14 | Insight: 15 |
23 | Tu 4/14 | Symbolic algebra 1 | ||
24 | Th 4/16 | Symbolic algebra 2 | ||
25 | Tu 4/21 | Graphs, data structures and algorithms | 15 | |
26 | Th 4/23 | Sparse matrices, the Google PageRank algorithm | 16 | |
27 | Tu 4/28 | Performance, interfacing with other languages | ||
28 | Th 4/30 | Review | ||
RRR week 5/4-5/8 | ||||
Th 5/14 | Final exam |
Homework | Quiz | Project | Due date |
---|---|---|---|
1 | Wed 1/29 | ||
2 | 1 | Wed 2/5 | |
3 | Wed 2/12 | ||
4 | 2 | 1 | Wed 2/19 |
5 | Wed 2/26 | ||
6 | 3 | 2 | Wed 3/4 |
7 | Wed 3/18 | ||
8 | Wed 3/18 | ||
9 | 4 | Wed 4/1 | |
3 | Wed 4/8 | ||
10 | 5 | Wed 4/15 | |
11 | 4 | Wed 4/22 | |
12 | 6 | 5 | Wed 4/29 |
Sec | Time | Room | GSI | Office hours | |
---|---|---|---|---|---|
101 | W 9 - 10 | 5 Evans | Tristan Hull | jth242@berkeley.edu | Tue 11:30-12:30 and 2-3 in 1087 Evans |
102 | W 10 - 11 | 285 Cory | Tristan Hull | jth242@berkeley.edu | ā |
103 | W 11 - 12 | 121 Latimer | Michael Franco | michaelfranco@berkeley.edu | Mon 4-6 in 959 Evans |
104 | W 12 - 1 | 7 Evans | Michael Franco | michaelfranco@berkeley.edu | ā |
Homework: Weekly homework will be posted on the web page, and it is in due before the Wednesday discussion sections (at 9am). The homework will be given and written in the form of Jupyter notebooks. The completed homework should be printed to PDF from your browser and submitted online through gradescope. Group discussions about the homework are encouraged, but each student must write his/her own solutions and computer codes and not copy them from anyone else. Late homework will not be accepted, but the two lowest scores will be dropped when computing the grade.
Quizzes: There will be a total of 6 pen-and-paper quizzes given in the Wednesday discussion sections. They will consist of chosen homework problems, possibly with minor modifications. There will be no make-up quizzes, but the quiz with lowest score will be dropped when computing the grade.
Projects: There will be a total of 5 programming projects. The projects will be given and written in the form of Jupyter notebooks. The completed projects should be submitted online through bCourses. Group discussions about the projects are encouraged, but each student must write his/her own computer codes and report, and not copy them from anyone else. Late submissions will not be accepted, and all 5 assignments will count towards the grade.
Exams: Two pen-and-paper exams will be given. There will be one in-class midterm exam, scheduled for Tuesday April 7 between 12:30 - 2:00pm. The final exam will be given on Thursday May 14 between 3:00pm - 6:00pm.
Grades: The final grade will be based on weekly homework assignments and quizzes (25%), the projects (25%), the Midterm exam (20%), and the Final exam (30%). If it improves your grade, we will count the Midterm exam (0%) and the Final exam (50%). This allows you to miss the midterm exam, but your chances are improved if you take it.
Incomplete grades: Incomplete āIā grades are almost never given. The only justification is a documented serious medical problem or genuine personal/family emergency. Falling behind in this course or problems with workload in other courses are not acceptable reasons.
Special arrangements: If you are a student with a disability registered by the Disabled Student Services (DSS) on UCB campus and if you require special arrangements during exams, you must provide the DSS document and make arrangements via email or office hours at least 10 days prior to each exam, explaining your circumstances and what special arrangements need to be done. Also see your GSI as soon as possible to make arrangements for the homework/quizzes.