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 11:10am - 12:30pm, room Physics Building 3.
Lecturer: Per-Olof Persson, persson@berkeley.edu.
Office hours: Tue 3:30-5pm
and Thu 9:15-10:45am in Evans 1081.
Exams:
Midterm exam: Tue Mar 5,
11:10am - 12:30pm
Final exam: Thu May 9, 8:00am -
11:00am
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 Visual Studio Code and add the Julia extensions according to these instructions.
The main course webpage is this page
bCourses will be used to post material, announcements, and to keep track of your assignment scores. It will also be used for submission of project notebooks. All essential official announcements will be made on bCourses (not on Ed), in particular policy messages and practical details. Note that we are not using the grading features of bCourses, so the percentages reported are not accurate.
Ed will be used for discussions about the material. It is primarily intended for discussions between the students, but the instructors will also be there to help answer questions (although perhaps not as frequently as other students). Note: The instructors will only participate in discussions about the course content, not about course organization, grading, administration, policies, etc. If you need more direct communication with the instructors, please bring it up during lectures / discussion sections, or discuss it in office hours.
Gradescope will be used for submission of homework. For instructions on how to upload on Gradescope, see this video and this handout. Note in particular, that you are expected to produce a clear and readable PDF of your assignments, and to mark which page each problem can be found on (as described on page 3 of the Gradescope handout above).
Homework: Weekly homework will be posted on the web page, and they are 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 mostly cover the material from the last two homework assignments, but might include questions on any previous topic. 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 both uploaded as a PDF to Gradescope (like the homework) and submitted as an ipynb-file on 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 March 5 between 11:10am - 12:30pm. The final exam will be given on Thursday May 9 between 8:00am - 11:00am.
Grades: The final grade will be based on weekly homework assignments and quizzes (30%), the projects (20%), 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.
Lec | Date | Topic | Notes | Other readings |
---|---|---|---|---|
1 | Tu 1/16 | Introduction, notebooks, markdown, LaTeX | MD, LX1, LX2 | |
2 | Th 1/18 | Basic Julia operations, variables, expressions | 1.1-1.2 | Think: 1,2 |
3 | Tu 1/23 | Functions, for-loops | 1.3-1.4 | Think: 3,6,4 |
4 | Th 1/25 | Conditional statements, iteration | 1.5-1.7 | Think: 5,7 |
5 | Tu 1/30 | Arrays, plotting | 2,3 | Think: 10, PyPlot |
6 | Th 2/01 | Debugging | 4 | Think: (every chapter) |
7 | Tu 2/06 | Random number and Monte Carlo simulation | 5 | Insight: 6 |
8 | Th 2/08 | More on arrays, vectorization | 6 | Julia: 19 |
9 | Tu 2/13 | Recursion, divide-and-conquer algorithms | 8 | Insight: 14 |
10 | Th 2/15 | Data Types: rational/complex/higher precision | 7 | Julia: 6, 44.4 |
11 | Tu 2/20 | Matrix operations, linear algebra | 9 | Julia: 77 |
12 | Th 2/22 | Strings, File processing | 10 | Julia 7,21, Think: 8,11,14 |
13 | Tu 2/27 | Floating-point, Algorithmic efficiency | 18.1-18.2 | |
14 | Th 2/29 | Review | ||
15 | Tu 3/05 | Midterm exam | ||
16 | Th 3/07 | Computational geometry | 12 | |
17 | Tu 3/12 | Computational geometry (continued) | 12 | |
18 | Th 3/14 | Differential equations, dynamical systems | 14 | |
19 | Tu 3/19 | Structs, types, object orientation | 11 | Think: 15-17 |
20 | Th 3/21 | Image processing algorithms | 13 | Insight: 12 |
Tu 3/26 | Spring Break - No lecture | |||
Th 3/28 | Spring Break - No lecture | |||
21 | Tu 4/02 | Graphs, data structures and algorithms | 16 | |
22 | Th 4/04 | (continued) | ||
23 | Tu 4/09 | Sparse matrices, the Google PageRank algorithm | 17 | |
24 | Th 4/11 | Symbolic algebra 1 | M1-M6 | |
25 | Tu 4/16 | Symbolic algebra 2 | M7-M12 | |
26 | Th 4/18 | Optimization, packages and applications | 15 | Insight: 15 |
27 | Tu 4/23 | Performance, interfacing with other languages | ||
28 | Th 4/25 | Review | ||
RRR week 4/29-5/3 | ||||
Th 5/09 | Final exam |
Homework | Quiz | Project | Due date |
---|---|---|---|
1 | Wed 1/24 | ||
2 | 1 | Wed 1/31 | |
3 | Wed 2/7 | ||
1 | Fri 2/9 | ||
4 | 2 | Wed 2/14 | |
5 | Wed 2/21 | ||
6 | 3 | Wed 2/28 | |
2 | Fri 3/1 | ||
7 | Wed 3/13 | ||
8 | 4 | Wed 3/20 | |
3 | Fri 3/22 | ||
9 | Wed 4/3 | ||
10 | 5 | Wed 4/10 | |
4 | Fri 4/12 | ||
11 | Wed 4/17 | ||
12 | 6 | Wed 4/24 | |
5 | Fri 4/26 |
Sec | Time | Room | GSI | E-mail (@berkeley.edu) | Office hours |
---|---|---|---|---|---|
101 | W 9 - 10 | VLSB 2038 | Yixiang Luo | yixiangluo | Wed 11am-1pm, Evans 1097 |
102 | W 10 - 11 | VLSB 2062 | Yixiang Luo | yixiangluo | Wed 11am-1pm, Evans 1097 |
103 | W 11 - 12 | Dwinelle 283 | Grace Zdeblick | grace_zdeblick | Wed 1-3pm, Evans 747 |
104 | W 12 - 1 | Dwinelle 106 | Tomasz Schang | tom_schang | Mon 3-4:30pm, Evans 1042 |