SIO 209 Introduction to MATLAB (section 96772), Fall 2022 (1 unit S/U)
syllabus & course information
This course will provide a hands-on introduction to MATLAB. No prior experience is necessary. The course will cover variables, plotting, scripts, matrices and other ways to store data including NetCDF, loops, and an introduction to more advanced techniques. While the focus is MATLAB, a brief comparison to other programming languages will be included and several of the coding approaches and best practices are applicable to other languages. Course material including notes, homework, and .mat files will be posted here and on Canvas as the course progresses.
* Monday September 19th
Workspace, startup, basic math, matrices & arrays, element-by-element vs. matrix math, symbolic algebra, characters & strings, scripts, best practices, basic plotting, saving figures, saving & loading data, loading and saving .txt or ascii files, basic statistics, basic fitting, MATLAB dates, figure properties, 2D plotting of 3D data, mapping, scatterplots.
* Tuesday September 20th
indexing & logical, functions, loops, vectorizing code for efficiency, structures, cell arrays, Native MATLAB NetCDF, SNCtools NetCDF.
You do not need any background with MATLAB or computer programming. Programming is learned best by practice, so in order to follow along and do the homework, you will need to have access to a computer that runs MATLAB. You can bring your own laptop or use a computer in the Eckart lab. UCSD has a campus-wide MATLAB license, instructions for students are here. Other options for MATLAB access are included here. Worst case scenario, a student version is available at the UCSD bookstore ($100), but that should not be necessary.
** Before coming to class on the first day:
- download MATLAB and test that it works
- log into the course via Canvas
- download notes for the first day of class
- download files provided
What if I have more or less experience than my classmates?
It is important to note that because this course is open to all levels, the level of difficulty will vary by student. In order to make the course valuable for a variety of experience levels, two sets of homework aimed for different levels (no prior experience and some-moderate experience) will be available as well as extensive office hours. I strongly encourage students to ask questions during class, slow me down if need be, and repeat some of the coding at home. Finally, a variety of references and tutorials are listed below including some free on-line learning tutorials for a range of experience levels.
note on the short format:
This class is scheduled for the very start of the fall quarter as some students may need to use MATLAB starting early in their fall quarter classes. Unfortunately, because of other competing time constraints (new student orientation, the Scripps Student Symposium, etc.), the course is packed into just 2 days this year. Prior offerings have been 2-3 days. While 4-5 days would be far preferable, most students find this course provides a good starting point. The goal is NOT to master the MATLAB programming language but rather to introduce students to the wide range of its capabilities and programming in general. For students with little to no experience, the main goal is to make them comfortable using the tool and knowing where to look for help in the future. For more experienced students, the goal is to learn some tricks and best practices.
credit & homework:
To enroll in the class, search for the section ID #96772 here. **You can only take this class credit/no credit, so please make sure you are appropriately enrolled.** To get course credit, you must attend both days of class and complete the homework. Homework will not be graded, it will be self-check. Again, you learn programming best by doing! As mentioned below, if any students are in need of remote-learning options, I should be able to accommodate that request and will explain to those students how to get the attendance credit.
COVID-19 circumstances for Fall 2022:
Instruction at UCSD has resumed to in person. However as of now, masking is still required in instructional settings and there are various vaccination and testing requirements. For most up-to-date COVID-19 requirements please see UCSD’s return to learn. I expect everyone to follow these requirements and to adapt should the requirements change. Most importantly, let us all pledge to remain respectful, supportive, and adaptable to ensure that educational goals are met. All participants in the course are bound by the UCSD Code of Conduct.
Please reach out to me directly if there are issues prohibiting your full engagement in the course so that we can find a workable solution. Please see the syllabus for information regarding anyone who requires remote instruction.
There are many textbooks covering MATLAB, so you might check out the selection at the UCSD bookstore. Here are a couple of suggestions:
- MATLAB, Third Edition: A Practical Introduction to Programming and Problem Solving by Stormy Attaway (bookstore link) (Amazon link). This one is well reviewed and recent.
- Physical Oceanography: A Mathematical Introduction with MATLAB by Reza Malek-Madani (Amazon link). This book seems useful for those interested in using MATLAB to solve numerical problems in physical oceanography. For those of you in different fields, look on-line, there are great books for applications to engineering, numerical methods, biology, etc.
- Introduction to Programming with MATLAB for Scientists and Engineers, second edition, by William W. Broenkow
- Mathworks (the company who developed MATLAB) has online tutorials as well as a detailed users manual is available.
- Regular Google searches work pretty well too as there is a very large user community and on-line responses to questions as well as application specific code sharing. Some code you will find through individual websites (e.g., TEOS-10) others you can find on the Matlab code file exchange.
Matlab help files (online and offline)
All of the Matlab help files are available within the program and online help. For functions, (e.g. the “plot” function), you can use the help command: >>help plot OR >>doc plot.