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.
NOTE: The first two weeks of instructions will be remote. This includes the lectures, the discussion sections, and the office hours. Please see the bCourses page for Zoom links.
Lectures: TuTh 8:10am - 9:30am, room 101 Morgan.
Lecturer: Per-Olof Persson, persson@berkeley.edu.
Office hours: Tue 10:30am - Noon and Thu Noon - 1:30pm in 1081 Evans.
Exams:
Midterm exam: Tue Mar 8, 8:10am - 9:30am
Final exam: Thu May 12, 7:00pm - 10: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 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 scan and upload on Gradescope, see this video and this handout with recommended scanning apps. 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 8 between 8:10 - 9:30am. The final exam will be given on Thursday May 12 between 7:00pm - 10:00pm.
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/18 | Introduction, notebooks, markdown, LaTeX | MD, LX1, LX2 | |
2 | Th 1/20 | Basic Julia operations, variables, expressions | 1.1-1.2 | Think: 1,2 |
3 | Tu 1/25 | Functions, for-loops | 1.3-1.4 | Think: 3,6,4 |
4 | Th 1/27 | Conditional statements, iteration | 1.5-1.7 | Think: 5,7 |
5 | Tu 2/01 | Arrays, plotting | 2,3 | Think: 10, PyPlot |
6 | Th 2/03 | Debugging | 4 | Think: (every chapter) |
7 | Tu 2/08 | Random number and Monte Carlo simulation | 5 | Insight: 6 |
8 | Th 2/10 | More on arrays, vectorization | 6 | Julia: 19 |
9 | Tu 2/15 | Recursion, divide-and-conquer algorithms | 8 | Insight: 14 |
10 | Th 2/17 | Data Types: rational/complex/higher precision | 7 | Julia: 6 |
11 | Tu 2/22 | Matrix operations, linear algebra | 9 | Julia: 75 |
12 | Th 2/24 | Strings, File processing | 10 | Julia 7,21, Think: 8,11,14 |
13 | Tu 3/01 | Floating-point, Algorithmic efficiency | 18.1-18.2 | |
14 | Th 3/03 | Review | ||
15 | Tu 3/08 | Midterm exam | ||
16 | Th 3/10 | Computational geometry | 12 | |
17 | Tu 3/15 | Computational geometry (continued) | 12 | |
18 | Th 3/17 | Differential equations, dynamical systems | 14 | |
Tu 3/22 | Spring Break - No lecture | |||
Th 3/24 | Spring Break - No lecture | |||
19 | Tu 3/29 | Structs, types, object orientation | 11 | Think: 15-17 |
20 | Th 3/31 | Image processing algorithms | 13 | Insight: 12 |
21 | Tu 4/05 | Graphs, data structures and algorithms | 16 | |
22 | Th 4/07 | Sparse matrices, the Google PageRank algorithm | 17 | |
23 | Tu 4/12 | Symbolic algebra 1 | M1-M6 | |
24 | Th 4/14 | Symbolic algebra 2 | M7-M12 | |
25 | Tu 4/19 | Symbolic algebra 2 (continued) | M7-M12 | |
26 | Th 4/21 | Optimization, packages and applications | 15 | Insight: 15 |
27 | Tu 4/26 | Performance, interfacing with other languages | ||
28 | Th 4/28 | Review | ||
RRR week 5/2-5/6 | ||||
Th 5/12 | Final exam |
Homework | Quiz | Project | Due date |
---|---|---|---|
1 | Wed 1/26 | ||
2 | 1 | Wed 2/2 | |
3 | Wed 2/9 | ||
1 | Fri 2/11 | ||
4 | 2 | Wed 2/16 | |
5 | Wed 2/23 | ||
2 | Fri 2/25 | ||
6 | 3 | Wed 3/2 | |
7 | Wed 3/16 | ||
8 | 4 | Wed 3/30 | |
3 | Fri 4/1 | ||
9 | Wed 4/6 | ||
10 | 5 | Wed 4/13 | |
4 | Fri 4/15 | ||
11 | Wed 4/20 | ||
12 | 6 | Wed 4/27 | |
5 | Fri 4/29 |
Sec | Time | Room | GSI | E-mail (@berkeley.edu) | Office hours |
---|---|---|---|---|---|
101 | W 9 - 10 | 245 Hearst Gym | Lewis Pan | yllpan | Evans 850, M 9-10:30am, F 2-3pm |
102 | W 10 - 11 | 115 Anthro/Art Prac | Lewis Pan | yllpan | Evans 850, M 9-10:30am, F 2-3pm |
103 | W 1 - 2 | 103 Gen. Plant Bio | Arjun Narayanan | arjun.narayanan | Evans 781, Tu/Th 3-4pm |
104 | W 12 - 1 | 245 Hearst Gym | Arjun Narayanan | arjun.narayanan | Evans 781, Tu/Th 3-4pm |