aalok thakkar: rustification - an introduction to rust

monsoon 2024: cs-is-3077

Vincent van Gogh, Twee krabben (1889)

Logistics:

Credits: 2
Meetings: Fridays, 2:00pm to 3:00pm
Meeting Room: AC-04-LR-002
Office Hours: TBD

Links:

Resources and Reading Materials
Project Summaries
Feedback, Appraisals, and Reflection
A Limerick

Course Description: Rust is a systems programming language that combines low-level control with high-level safety. It excels in performance and concurrency while preventing common errors like null pointer dereferencing and buffer overflows. With its growing adoption in AI, web development, and systems programming, Rust offers a modern solution to age-old programming challenges. The independent study module offers participants an opportunity to acquire Rust proficiency through engagement with real-world applications of Rust programming. Students will select from three project categories: translating existing code into Rust, contributing a new feature to an open-source Rust project, or resolving an issue within an open-source Rust codebase. Through these projects, students will develop competence in fundamental Rust concepts.

Prerequisites: Prerequisites for this course include a strong foundation in at least one programming language. While prior experience with Rust is not mandatory, participants should either possess a basic familiarity with Rust concepts or be prepared to engage in concurrent self-study alongside the course.

Course Project: As described above, students will select from three project categories: translating existing code into Rust, contributing a new feature to an open-source Rust project, or resolving an issue within an open-source Rust codebase. Their project will determine the learning trajectory for the course. The project topic must be approved by the instructor. The project can be completed individually or in groups of up to 3 members. A project proposal is due by September 9. The final submission is due on November 21 and consists of three components: a short write-up, codebase, and a poster. The codebase should be available on Github as a public repository with appropriate documentation and commit history. The poster should visually summarize the project, including the key problem statement, main steps of the approach, significant results, and relevant visual aids. Find some guidelines and a sample here. The meeting on November 28 will be used for project presentations. The project will be evaluated based on the originality and relevance of the chosen problem, code quality, functionality, Rust-specific concepts utilization, and adherence to open-source contribution standards.

Grading: The grades for this ISM are evaluated solely on the course project.

  1. Progress Evaluations: The evaluations on September 25 and November 6 will each contribute 15% to the final grade, accounting for 30% in total. These assessments will measure the student's growing understanding of Rust concepts, their ability to apply them progressively, and the ability of the student to remain on the timeline for the course project.
  2. Code Quality: Students will perform detailed code reviews for their peers throughout the course. These reviews will be used to measure the proper use of Rust idioms, safety features, and core concepts like ownership and borrowing and will contribute to 20% of the total grade.
  3. Functionality and Completeness: This evaluates the correctness of implementation and fulfillment of project requirements. The gold standard for this parameter (and the project) is for your pull request to be accepted by an open-source project. It contributes to 20% of the total grade.
  4. Documentation and Testing: The project codebase must be complemented by detailed documentation and unit tests. The clarity of code comments, appropriateness of the documentation, and the presence and quality of unit tests contribute to 15% of the total grade.
  5. Project Presentation: The remaining 15% of the grade is allocated to the final presentation, where students will demonstrate their ability to articulate their project's goals, challenges, and outcomes, as well as reflect on their learning journey with Rust.

Policies: Students are expected to review and abide by Ashoka's Academic Integrity Policy (MyAshoka → Information and Documents → Office of Academic Affairs). Attendance is required in at least 7 out of 9 ISM meetings.

Calendar:

Sunday Monday Tuesday Wednesday Thursday Friday Saturday
Aug 25 Aug 26 Aug 27
Aug 28
Aug 29
Aug 30
Meeting 1
Aug 31
Sep 1
Sep 2
Sep 3
Sep 4
Sep 5
Sep 6
Sep 7
Sep 8
Sep 9
Meeting 2
Project Proposal
Sep 10
Sep 11
Sep 12
Sep 13
Meeting 3
Sep 14
Sep 15
Sep 16
Sep 17
Sep 18
Sep 19
Sep 20
Meeting 4
Sep 21
Sep 22
Sep 23
Sep 24
Sep 25
Sep 26
Sep 27
Meeting 5: Evaluation I
Sep 28
Appraisal I
Sep 29
Sep 30
Oct 1
Oct 2
Oct 3
Oct 4
Meeting 6
Oct 5
Oct 6
Oct 7
Oct 8
Oct 9
Oct 10
Oct 11
Oct 12
Oct 13
Oct 14
Oct 15
Oct 16
Oct 17
Oct 18
Meeting 7
Oct 19
Oct 20
Oct 21
Oct 22
Oct 23
Oct 24
Oct 25
Meeting 8
Oct 26
Oct 27
Oct 28
Oct 29
Oct 30
Oct 31
Nov 1
Nov 2
Nov 3
Nov 4
Nov 5
Nov 6
Nov 7
Nov 8
Meeting 9: Evaluation II
Nov 9
Appraisal II
Nov 10
Nov 11
Nov 12
Nov 13
Nov 14
Nov 15
Nov 16
Nov 17
Nov 18
Nov 19
Nov 20
Nov 21
Project Submission
Nov 22
Nov 23
Nov 24
Nov 25
Nov 26
Nov 27
Nov 28
Nov 29
Project Presentations
Nov 30
Course Reflection