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.
Zoom lectures: TuTh 9:30am - 11am (Zoom link, see bCourses for password)
Lecturer: Per-Olof Persson, persson@berkeley.edu.
Exams:
Midterm exam: Tue Mar 9, 9:40am - 11:00am
Final exam: Wed May 12, 11:30am - 2:30pm
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.
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 Piazza), 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.
Piazza 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 attend the scheduled live sessions or schedule an office hour meeting.
Gradescope will be used for submission of homework and exams. See bCourses for course entry code. 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 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 March 9 between 9:30 - 11:00am. The final exam will be given on Wednesday May 12 between 11:30am - 2:30pm. Practical details on how these remote exams will be conducted will be posted separately.
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/19 | Introduction, basic Julia operations | 1.1 | Think: 1,2 |
2 | Th 1/21 | Variables, expressions, functions, loops | 1.2-1.4 | Think: 3,6 |
3 | Tu 1/26 | Conditional statements, iteration | 1.5-1.7 | Think: 5,7 |
4 | Th 1/28 | Arrays | 2 | Think: 10 |
5 | Tu 2/02 | Plotting, the PyPlot package | 3 | PyPlot |
6 | Th 2/04 | Random number and Monte Carlo simulation | 4 | Insight: 6 |
7 | Tu 2/09 | More on arrays, vectorization | 5 | Julia: 19.1-7 |
8 | Th 2/11 | Recursion, divide-and-conquer algorithms | 7 | Insight: 14 |
9 | Tu 2/16 | Rational and complex numbers, higher precision | 6 | Julia: 6 |
10 | Th 2/18 | Matrix operations, linear algebra | 8 | Julia: 74 |
11 | Tu 2/23 | Strings, File processing | 9 | Julia 7,21, Think: 8,11,14 |
12 | Th 2/25 | Markdown, LaTeX | MD, LX1, LX2 | |
13 | Tu 3/02 | Floating-point arithmetics | FPslides, FPdemo | |
14 | Th 3/04 | Review | ||
15 | Tu 3/09 | Midterm exam | ||
16 | Th 3/11 | TBD | ||
17 | Tu 3/16 | Computational geometry | 11 | |
18 | Th 3/18 | Differential equations, dynamical systems | 13 | |
Tu 3/23 | Spring Break - No lecture | |||
Th 3/25 | Spring Break - No lecture | |||
19 | Tu 3/30 | Optimization, packages and applications | 14 | Insight: 15 |
20 | Th 4/01 | Data types, object orientation | 10 | Think: 15-17 |
21 | Tu 4/06 | Graphs, data structures and algorithms | 15 | |
22 | Th 4/08 | Symbolic algebra 1 | M1-M6 | |
23 | Tu 4/13 | Sparse matrices, the Google PageRank algorithm | 16 | |
24 | Th 4/15 | Symbolic algebra 2 | M7-M12 | |
25 | Tu 4/20 | Image processing algorithms | 12 | Insight: 12 |
26 | Th 4/22 | Performance, interfacing with other languages | ||
27 | Tu 4/27 | TBD | ||
28 | Th 4/29 | Review | ||
RRR week 5/3-5/7 | ||||
We 5/12 | Final exam |
Homework | Quiz | Project | Due date |
---|---|---|---|
1 | Wed 1/27 | ||
2 | 1 | Wed 2/3 | |
3 | Wed 2/10 | ||
1 | Fri 2/12 | ||
4 | 2 | Wed 2/17 | |
5 | Wed 2/24 | ||
2 | Fri 2/26 | ||
6 | 3 | Wed 3/3 | |
7 | Wed 3/17 | ||
3 | Fri 3/19 | ||
8 | 4 | Wed 3/31 | |
9 | Wed 4/7 | ||
4 | Fri 4/9 | ||
10 | 5 | Wed 4/14 | |
11 | Wed 4/21 | ||
5 | Fri 4/23 | ||
12 | 6 | Wed 4/28 |
Sec | Time | GSI | |
---|---|---|---|
101 | W 9 - 10 | Yixiang Luo | yixiangluo@berkeley.edu |
102 | W 10 - 11 | Yixiang Luo | yixiangluo@berkeley.edu |
103 | W 11 - 12 | Jeffmin Lin | jeffminlin@berkeley.edu |
104 | W 12 - 1 | Jeffmin Lin | jeffminlin@berkeley.edu |