{"id":{"repo_id":"vt","oai_identifier":"oai:vtechworks.lib.vt.edu:10919/138268"},"canonical_url":"https://search.dev.ndltd.org/etd/vt/oai:vtechworks.lib.vt.edu:10919/138268","repository":{"repo_id":"vt","name":"Virginia Tech","base_url":"https://vtechworks.lib.vt.edu/oai/request"},"display":{"title":"An Undergraduate Computer Systems Curriculum Using Rust","abstract":"We present the design and evaluation of an undergraduate computer systems curriculum taught in the Rust programming language. Traditionally, such courses have relied on C to introduce students to fundamental concepts including processes, memory management, and concurrency. While C has historical and practical significance, it exposes students to memory safety errors and undefined behavior that can hinder learning. Rust offers comparable performance and control while enforcing memory and thread safety, but the steep learning curve may preclude its use as an instructional language for operating systems education. We investigate the feasibility of Rust as the teaching language for a computer systems course through three primary contributions. First, we designed a course curriculum that adapts the structure of a traditional computer systems class to Rust. We reworked core systems assignments to leverage Rust's features and safety guarantees. Second, we document the challenges of integrating Rust into undergraduate teaching, addressing its steep learning curve and balancing language instruction with systems concepts. Third, we offer pedagogical strategies and reusable materials that can support instructors considering Rust for similar courses. We evaluated the curriculum in a single semester offering at Virginia Tech. Data from student surveys and qualitative feedback show that although Rust's ownership and borrowing rules required additional guidance, students successfully completed systems-level Rust projects and reported improved understanding of the associated systems theory. This work contributes both a concrete curriculum and an empirical case study supporting the integration of Rust into computer science education.","abstract_html":"We present the design and evaluation of an undergraduate computer systems curriculum taught in the Rust programming language. Traditionally, such courses have relied on C to introduce students to fundamental concepts including processes, memory management, and concurrency. While C has historical and practical significance, it exposes students to memory safety errors and undefined behavior that can hinder learning. Rust offers comparable performance and control while enforcing memory and thread safety, but the steep learning curve may preclude its use as an instructional language for operating systems education. We investigate the feasibility of Rust as the teaching language for a computer systems course through three primary contributions. First, we designed a course curriculum that adapts the structure of a traditional computer systems class to Rust. We reworked core systems assignments to leverage Rust&#x27;s features and safety guarantees. Second, we document the challenges of integrating Rust into undergraduate teaching, addressing its steep learning curve and balancing language instruction with systems concepts. Third, we offer pedagogical strategies and reusable materials that can support instructors considering Rust for similar courses. We evaluated the curriculum in a single semester offering at Virginia Tech. Data from student surveys and qualitative feedback show that although Rust&#x27;s ownership and borrowing rules required additional guidance, students successfully completed systems-level Rust projects and reported improved understanding of the associated systems theory. This work contributes both a concrete curriculum and an empirical case study supporting the integration of Rust into computer science education.","abstract_has_math":false,"creators":["Siek, Kieran Rong Chen"],"institution":"Virginia Tech","degree_name":"Master of Science","degree_level":"masters","degree_discipline":"Computer Science & Applications","degree_department":"Computer Science and#38; Applications","school":null,"contributors":[],"advisors":[],"committee_chairs":["Back, Godmar Volker"],"committee_members":["Li, Huaicheng","Hamouda, Sally"],"year":2025,"date_issued":"2025-10-20","date_published":"2025-10-20","updated_at":"2026-07-22T22:19:48Z","subjects":["Computer Systems","CS Education","The Rust Programming Language"],"languages":["en"],"rights":["In Copyright"],"rights_urls":["http://rightsstatements.org/vocab/InC/1.0/"],"identifier_entries":[{"key":"dc:identifier.other","label":"Dc Identifier Other","values":["vt_gsexam:44816"],"render_values":[{"text":"vt_gsexam:44816","href":null,"code":true}]}]},"links":{"outbound_url":"https://hdl.handle.net/10919/138268","outbound_label":"Handle","outbound_source":"dc:identifier.uri"},"metadata_groups":[{"id":"people","label":"People","entries":[{"key":"dc:contributor.committeechair","label":"Committee Chair","values":["Back, Godmar Volker"]},{"key":"dc:contributor.committeemember","label":"Committee Member","values":["Li, Huaicheng","Hamouda, Sally"]},{"key":"dc:contributor.department","label":"Department","values":["Computer Science and#38; Applications"]},{"key":"dc:creator","label":"Author","values":["Siek, Kieran Rong Chen"]}]},{"id":"academic_context","label":"Academic Context","entries":[{"key":"dc:date.accessioned","label":"Dc Date Accessioned","values":["2025-10-21T08:00:25Z"]},{"key":"dc:date.available","label":"Dc Date Available","values":["2025-10-21T08:00:25Z"]},{"key":"dc:date.issued","label":"Date","values":["2025-10-20"]},{"key":"dc:publisher","label":"Institution","values":["Virginia Tech"]},{"key":"dc:type","label":"Dc Type","values":["Thesis"]},{"key":"thesis:degree_discipline","label":"Discipline","values":["Computer Science & Applications"]},{"key":"thesis:degree_level","label":"Degree Level","values":["masters"]},{"key":"thesis:degree_name","label":"Degree Name","values":["Master of Science"]},{"key":"thesis:institution_name","label":"Thesis Institution Name","values":["Virginia Polytechnic Institute and State University"]}]},{"id":"subjects_keywords","label":"Subjects and Keywords","entries":[{"key":"dc:subject","label":"Dc Subject","values":["Computer Systems","CS Education","The Rust Programming Language"]}]},{"id":"language_rights","label":"Language and Rights","entries":[{"key":"dc:language.iso","label":"Language (ISO)","values":["en"]},{"key":"dc:rights","label":"Dc Rights","values":["In Copyright"]},{"key":"dc:rights.uri","label":"Rights URI","values":["http://rightsstatements.org/vocab/InC/1.0/"]}]},{"id":"identifiers","label":"Identifiers","entries":[{"key":"dc:identifier.other","label":"Dc Identifier Other","values":["vt_gsexam:44816"]},{"key":"dc:identifier.uri","label":"Identifier URI","values":["https://hdl.handle.net/10919/138268"]}]},{"id":"additional","label":"Additional Metadata","entries":[{"key":"dc:description.abstract","label":"Abstract","values":["We present the design and evaluation of an undergraduate computer systems curriculum taught in the Rust programming language. Traditionally, such courses have relied on C to introduce students to fundamental concepts including processes, memory management, and concurrency. While C has historical and practical significance, it exposes students to memory safety errors and undefined behavior that can hinder learning. Rust offers comparable performance and control while enforcing memory and thread safety, but the steep learning curve may preclude its use as an instructional language for operating systems education. We investigate the feasibility of Rust as the teaching language for a computer systems course through three primary contributions. First, we designed a course curriculum that adapts the structure of a traditional computer systems class to Rust. We reworked core systems assignments to leverage Rust's features and safety guarantees. Second, we document the challenges of integrating Rust into undergraduate teaching, addressing its steep learning curve and balancing language instruction with systems concepts. Third, we offer pedagogical strategies and reusable materials that can support instructors considering Rust for similar courses. We evaluated the curriculum in a single semester offering at Virginia Tech. Data from student surveys and qualitative feedback show that although Rust's ownership and borrowing rules required additional guidance, students successfully completed systems-level Rust projects and reported improved understanding of the associated systems theory. This work contributes both a concrete curriculum and an empirical case study supporting the integration of Rust into computer science education."]},{"key":"dc:description.abstractgeneral","label":"General Abstract","values":["This thesis examines how to teach undergraduates the fundamentals of computer systems using the Rust programming language. A computer systems course introduces students to the design and structure of a computer system, primarily related to how different applications share the same underlying hardware resources. Traditionally, such courses have relied on the C programming language, valued for its efficiency and proximity to the hardware. However, C is also error-prone, and mistakes in use can cause crashes or confusing errors that hinder learning. Rust offers equivalent performance and control but prevents many of these errors by design, making it a promising candidate for systems education. We present our adaptation of a traditional computer systems curriculum to Rust. We developed lecture materials and major programming projects to highlight both core systems concepts and Rust's unique benefits. We document the challenges of introducing Rust in the classroom, including its steep learning curve, and present strategies and instructional materials that support students and instructors in navigating these difficulties. We evaluated the curriculum in a single semester offering at Virginia Tech. Data from student surveys and written feedback indicate that while Rust required additional guidance, students successfully completed the projects and reported stronger comprehension of how computers manage applications and memory. These findings suggest that Rust is a viable alternative to C in teaching computer systems and provide a model for modernizing the way these courses are taught."]},{"key":"dc:description.degree","label":"Dc Description Degree","values":["Master of Science"]},{"key":"dc:format.medium","label":"Dc Format Medium","values":["ETD"]},{"key":"dc:title","label":"Title","values":["An Undergraduate Computer Systems Curriculum Using Rust"]}]}],"canonical_facts":{"dc:contributor.committeechair":["Back, Godmar Volker"],"dc:contributor.committeemember":["Li, Huaicheng","Hamouda, Sally"],"dc:contributor.department":["Computer Science and#38; Applications"],"dc:creator":["Siek, Kieran Rong Chen"],"dc:date.accessioned":["2025-10-21T08:00:25Z"],"dc:date.available":["2025-10-21T08:00:25Z"],"dc:date.issued":["2025-10-20"],"dc:description.abstract":["We present the design and evaluation of an undergraduate computer systems curriculum taught in the Rust programming language. Traditionally, such courses have relied on C to introduce students to fundamental concepts including processes, memory management, and concurrency. While C has historical and practical significance, it exposes students to memory safety errors and undefined behavior that can hinder learning. Rust offers comparable performance and control while enforcing memory and thread safety, but the steep learning curve may preclude its use as an instructional language for operating systems education. We investigate the feasibility of Rust as the teaching language for a computer systems course through three primary contributions. First, we designed a course curriculum that adapts the structure of a traditional computer systems class to Rust. We reworked core systems assignments to leverage Rust's features and safety guarantees. Second, we document the challenges of integrating Rust into undergraduate teaching, addressing its steep learning curve and balancing language instruction with systems concepts. Third, we offer pedagogical strategies and reusable materials that can support instructors considering Rust for similar courses. We evaluated the curriculum in a single semester offering at Virginia Tech. Data from student surveys and qualitative feedback show that although Rust's ownership and borrowing rules required additional guidance, students successfully completed systems-level Rust projects and reported improved understanding of the associated systems theory. This work contributes both a concrete curriculum and an empirical case study supporting the integration of Rust into computer science education."],"dc:description.abstractgeneral":["This thesis examines how to teach undergraduates the fundamentals of computer systems using the Rust programming language. A computer systems course introduces students to the design and structure of a computer system, primarily related to how different applications share the same underlying hardware resources. Traditionally, such courses have relied on the C programming language, valued for its efficiency and proximity to the hardware. However, C is also error-prone, and mistakes in use can cause crashes or confusing errors that hinder learning. Rust offers equivalent performance and control but prevents many of these errors by design, making it a promising candidate for systems education. We present our adaptation of a traditional computer systems curriculum to Rust. We developed lecture materials and major programming projects to highlight both core systems concepts and Rust's unique benefits. We document the challenges of introducing Rust in the classroom, including its steep learning curve, and present strategies and instructional materials that support students and instructors in navigating these difficulties. We evaluated the curriculum in a single semester offering at Virginia Tech. Data from student surveys and written feedback indicate that while Rust required additional guidance, students successfully completed the projects and reported stronger comprehension of how computers manage applications and memory. These findings suggest that Rust is a viable alternative to C in teaching computer systems and provide a model for modernizing the way these courses are taught."],"dc:description.degree":["Master of Science"],"dc:format.medium":["ETD"],"dc:identifier.other":["vt_gsexam:44816"],"dc:identifier.uri":["https://hdl.handle.net/10919/138268"],"dc:language.iso":["en"],"dc:publisher":["Virginia Tech"],"dc:rights":["In Copyright"],"dc:rights.uri":["http://rightsstatements.org/vocab/InC/1.0/"],"dc:subject":["Computer Systems","CS Education","The Rust Programming Language"],"dc:title":["An Undergraduate Computer Systems Curriculum Using Rust"],"dc:type":["Thesis"],"thesis:degree_discipline":["Computer Science & Applications"],"thesis:degree_level":["masters"],"thesis:degree_name":["Master of Science"],"thesis:institution_name":["Virginia Polytechnic Institute and State University"]},"updated_at":"2026-07-22T22:19:48Z"}