- Location: 60-120
- Time: M/W 3:00PM - 4:20PM
- This short course runs from weeks 2-5 of the quarter
- Instructor: Brad Nelson
- Email: bjnelson@stanford
- Office Hours: By appointment. You can also come to C2 office hours Wed. 12-2 outside ICME (Huang basement)
This course is intended to introduce students who are already somewhat familiar with scientific computing to what Julia has to offer. It is not intended to be a first course in programming (there are several other short courses that are more suited for this purpose). This is not to say that Julia itself is a difficult language to learn - it is pretty easy to get started with a search online, but that the course will cover material that will likely be much more work if you haven't seen something similar before.
A tentative schedule follows (topics may bleed into more than one day)
- Programming in Julia
- Basics / getting started
- Object Oriented Features, type system
- The Julia Ecosystem
- Packages (common scientific computing packages, and how to use them) - graphics, math packages, graph theory, optimization, etc.
- Intro to GitHub
- Practical Julia
- How to write your own package/module, more GitHub
- Interfacing with C/Fortran shared object libraries, PyCall
- Julia in the Wild
- Debugging, performance, etc.
- Special topics - parallelism, linear algebra implementations, blas calls, etc., the future of Julia
Since Julia is a relatively new language, and is still being rapidly developed, we're going to work with the bleeding-edge version (or the most recent passing build) on GitHub. This will allow us to see the most up-to-date functionality, and maybe you'll even find something you can contribute to.
This is the first time this course is being offered, and I want to cover material that is interesting and useful to you. If there is something in particular that you would like to see, let me know!
- Learn the basics of Julia and git, and learn where to find more information
- Explore some of the scientific computing capabilities of Julia
- Learn how to create a Julia package for your own projects
- See resources.md
- You are also welcome to use Google to find tutorials or for troubleshooting solutions online. Let me know if you find a good resource!
I hope to make the class as hands-on and interactive as possible. It is fairly easy to learn the basics of Julia on your own, so instead of lectures on something you can find better explained on Google, the class will be held in a workshop-like style. Please bring a laptop to class.
Since the best way to learn a new language is through practice, there will be homework after each class.
- Mini-homeworks will be go out Monday at the end of class, and will be due by midnight Tuesday (should take 15-30 min to complete)
- (slightly larger) homeworks will go out Wednesday at the end of class, and will be due by 5pm the following Sunday (should take 1-2 hours).
Since this is a 1-unit course, the goal is not to overwhelm you. If you are stuck on an assignment, please ask for help instead of spending large amounts of time searching for an answer.
This course is offered only on a credit/no-credit basis. You don't need to worry about perfect assignments, just make sure code runs as expected and is intelligible. Assignments (50%) will be marked as complete or incomplete, and I will also try to give useful feedback. I expect you to try all the homework (unless otherwise noted), and if you're stuck a partial answer or short note explaining what you've tried will be fine. You can have one 24-hour extension, otherwise late assignments will not be marked complete or receive feedback.
Participation (50%) will also be important given the style of the course. I expect you to come to every class (there are only 8), but understand that you may have unavoidable conflicts come up. If you need to miss a class please send me an email.
This course is intended to be collaborative. You can (and should) work with other students in class and on homework. You should turn in your own solutions (don't copy others). If you worked closely with someone or found an answer on the web, please acknowledge the source of your solution.
Students who may need an academic accommodation based on the impact of a disability must initiate the request with the Office of Accessible Education (OAE). Professional staff will evaluate the request with required documentation, recommend reasonable accommodations, and prepare an Accommodation Letter for faculty dated in the current quarter in which the request is being made. Students should contact the OAE as soon as possible since timely notice is needed to coordinate accommodations. The OAE is located at 563 Salvatierra Walk (phone: 723-1066, URL: http://studentaffairs.stanford.edu/oae).