Syllabus
CS 410P/510 Rust: Rust Programming
Term: Summer 2019
Credits: 4 (410P), 3 (510)
Sections: Sec 020 CRN 80323 (410P), Sec 17 CRN 80333 (510)
Meeting Time: Monday, Wednesday 1300-1520
Meeting Location: Cinema 90
Instructor: Bart Massey (bart AT cs DOT pdx DOT edu)
Office Location: FAB 120-18
TA: Aark Koduru (ark2 AT pdx DOT edu)
Office Hours: Fishbowl Tuesday, 9:00-10:00
Prerequisites: CS 201, CS 202
Disclaimer
Everything about this syllabus is entirely tentative, and maybe be changed at the whim of the instructor without warning.
Description
In this course, we will learn to program in Rust. Rust is a novel programming language combining solid bare-metal performance with modern language features that given good usability and tend to induce high-quality code.
Goals, Topics and Objectives
The languages of choice for systems programming for the past 30 years have been C and its larger cousin C++. Because of their popularity and performance, C and C++ have also been a common choice for application programming. However, these languages are well-understood to be both error-prone, inconveniently verbose, and difficult to use for large-scale software engineering.
Rust is an attempt to remedy many of the deficiencies of C and C++. Rust provides a modern strong static type system, a strong module system supporting separate module compilation, and a static programmer-transparent memory allocation scheme that largely eliminates runtime memory errors.
In this course, we will learn to program in Rust. Familiarity with programming in general and C/C++ in particular is required. Basic ability to use the Linux environment is required.
Upon the successful completion of this course students will be able to:
Create a Rust project, including proper Cargo configuration.
Translate a design into a working Rust program.
Explain and remedy type and lifetime errors encountered during Rust programming.
Construct reasonable types within programs, including parametric and lifetime-bounded types.
Use structs, enums and traits as intended in the construction of Rust programs.
Apply references, boxes, cells and reference counting in Rust programming.
Divide a Rust crate into multiple source files using the module system.
Write tests and documentation using the Rust infrastructure.
Write a Rust package ("crate") that integrates smoothly into the Rust ecosystem.
Reading
The course text is
Programming Rust: Fast, Safe Systems Development
Jim Blandy and Jason Orendorff
O'Reilly 2018
The e-book of this text is less expensive and reads OK on a large screen. Get the textbook right now if you don't have it already.
This book is fantastic. It is also very large and complete. You will be expected to read four chapters most weeks. You really need to do this; further, you need to read for understanding and try stuff out as you read. There is no good substitute for concentrating on the textbook.
That said, the course LMS lists some alternate materials that are also really good to read, and may help explain and amplify the course material.
Course Communication
Communications for this course will primarily be through a shared workspace provided by a cross-platform chat tool. Every student is required to join this chat and keep aware of what is being said there; participation is strongly encouraged.
The course Learning Management System will be used for course schedules, notes, and assignments. Every student is required to be registered with the LMS.
Problems with the communications channel should be promptly reported to the course staff so that they can be promptly corrected.
Course Work
Workload
This course requires substantial out-of-class homework and study. Expect to spend at least 8 hours of out-of-class time each week mastering this difficult material.
I encourage group collaboration on individual assignments: creating study groups or online chat-rooms to discuss the approach and understand the problem is an acceptable and encouraged methodology. The write-up, programming, and actual solutions must be your own (or your team's own) work. If you represent someone else's work as your own, you are committing plagiarism (see below).
Quizzes and Exams
There will be no midterm or final examination in this course — we just don't have the class time. That said, there may be in-class quizzes to check progress.
Homework
I will assign take-home homework most weeks. Late homeworks will be accepted, if at all, only for good reasons and at a substantial penalty.
Course Project
You will select an individual or small group course project, which will continue throughout the quarter. The course project is an important activity of the course, giving an opportunity to practice the learnings and skills of the class and demonstrate mastery of the material.
Grading
Projects and assignments will be graded for having been turned in and having made a solid effort, as well as for being substantially correct and of high quality.
You may submit a homework as many times as you like, with the latest assignment received being the only one considered for a grade. Please submit something before the deadline, even if it is only your name — you can then continue to work on your assignment as desired up until it is graded.
It is important that every assigned activity be attempted before the deadline, acting in good faith. A score of zero on any project will result in a grade of F for the course.
Academic Honesty
Cheating on homework or the project will result in a grade of zero on the affected material, and will be reported to appropriate authorities. Plagiarism is a form of cheating. Please do not let me catch you plagiarizing.
Plagiarism: n 1: a piece of writing/work that has been copied from someone else and is presented as being your own work 2: the act of plagiarizing; taking someone's words or ideas as if they were your own.
—www.dictionary.com
If you use code, ideas, or text authored by someone else, cite them. It is OK to get help from external sources of knowledge, but citation is mandatory.
Safe Space
PSU and your instructor are committed to providing a safe and effective learning space for people of all races and ethnicities, genders and gender roles, religious beliefs, physical abilities, etc. Students in this course must conduct themselves collegially and professionally. Bigotry or uncivility of any type will not be tolerated: this behavior will result in removal from the course and reporting to the appropriate authorities at PSU.
Access and Inclusion for Students with Disabilities
PSU values diversity and inclusion; we are committed to fostering mutual respect and full participation for all students. My goal is to create a learning environment that is equitable, useable, inclusive, and welcoming. If any aspects of instruction or course design result in barriers to your inclusion or learning, please notify me. The Disability Resource Center (DRC) provides reasonable accommodations for students who encounter barriers in the learning environment.
If you have, or think you may have, a disability that may affect your work in this class and feel you need accommodations, contact the Disability Resource Center to schedule an appointment and initiate a conversation about reasonable accommodations. The DRC is located in 116 Smith Memorial Student Union, 503-725-4150, drc@pdx.edu, https://www.pdx.edu/drc.
If you already have accommodations, please contact me to make sure that I have received a faculty notification letter and discuss your accommodations. Students who need accommodations for tests and quizzes are expected to schedule their tests to overlap with the time the class is taking the test.
For information about emergency preparedness, please go to the Fire and Life Safety webpage https://www.pdx.edu/environmental-health-safety/fire-and-life-safety for information.
Discrimination and Harrassment; Mandatory Reporting
Portland State is committed to providing an environment free of all forms of prohibited discrimination and sexual harassment (sexual assault, domestic and dating violence, gender or sex-based harassment and stalking). If you have experienced any form of gender or sex-based discrimination or sexual harassment, know that help and support are available. PSU has staff members trained to support survivors in navigating campus life, accessing health and counseling services, providing academic and on-housing accommodations, helping with legal protective orders, and more. Information about PSU’s support services on campus, including confidential services and reporting options, can be found on PSU’s Sexual Misconduct Prevention and Response website at http://www.pdx.edu/sexual-assault/get-help. You may call a Confidential Advocate at 503-725-5672 or by scheduling on-line: http://psuwrc.youcanbook.me. You may also report any incident of discrimination or discriminatory harassment, including sexual harassment, to either the Office of Equity and Compliance or the Office of the Dean of Student Life.
Please be aware that all PSU faculty members and instructors are required to report information of an incident that may constitute prohibited discrimination, including sexual harassment and sexual violence. This means that if you tell me about a situation of sexual harassment or sexual violence that may have violated university policy or student code of conduct, I have to share the information with my supervisor, the University’s Title IX Coordinator or the Office of the Dean of Student Life. For more information about these matters that include Title IX, please complete the required student module Creating a Safe Campus in your D2L.