ABSTRACT
This paper presents experiences with creating a computer simulator as a student project in a CS1 course. Each student writes the simulator using C++ during the last ten weeks of the course. The project consists of a simulated memory, and simple CPU simulator including a machine language. Additionally, students implement an assembly language and a simple high-level language with associated compiler. The course has no programming prerequisite and can be taken to fulfill a general education requirement or as the first course for students majoring in computer science or information systems. Integrating such a project in an entry level course has a number of benefits as well as challenges. The project acts as a vehicle that engages students in a breadth of computer science topics, leading into discussions of theoretical considerations, languages, and computing devices. The project components provide an active learning environment. Students are introduced to numbering systems, number conversions, and numeric representations. The computer architecture components include introductions to main memory, CPU, and memory access techniques. The transition from and motivations for, the utilization of machine languages, assembly languages and high-level languages are demonstrated with the implementation of the project. Beginning students are given opportunity to practice programming and problem solving on a project of significant complexity. The biggest challenge is organization. Management of such a project requires a well-defined plan.
- Peter Denning, Douglas E. Comer, David Gries, Michael C. Mulder, Allen B. Tucker, A. Joe Turner, and Paul R. Young. 1988. Computing as a discipline: preliminary report of the ACM task force on the core of computer science. SIGCSE Bull. 20, 1, 41--41, 1988. Google ScholarDigital Library
- IEEE & ACM Joint Task Force on Computing Curricula, Computing Curricula 2001 Computer Science, December 15, 2001, http://acm.org/education/curric_vols/cc2001.pdf, retrieved June 4, 2014.Google Scholar
- IEEE Computer Society and Association for Computing Machinery Joint Task Force on Computing Curricula "Computer Science Curricula 2013 " http://www.acm.org/education/CS2013-final-report.pdf retrieved May 26, 2014.Google Scholar
- John Phillips. 2007. Simulation of a simple CPU design and its use as an instructional tool in a computer organization course. J. Comput. Sci. Coll. 22, 6 (June 2007), 140--146. Google ScholarDigital Library
- Kian L. Pokorny, Introduction to computing: a fresh breadth of disciplines. J. Comput. Small Coll. 24, 5, 166--172, 2009. classes. J. Comput. Sci. Coll. 29, 2 (December 2013), 60--66. Google ScholarDigital Library
- Kris D. Powers. 2004. Teaching computer architecture in introductory computing: why? And how?. In Proceedings of the Sixth Australasian Conference on Computing Education - Volume 30(ACE '04), Raymond Lister and Alison Young (Eds.), Vol. 30. Australian Computer Society, Inc., Darlinghurst, Australia, Australia, 255--260. Google ScholarDigital Library
- Stanley, Prigmore, Mikolyski, Embrey, Fife, (2007 June) "Pedagogic Value in Understanding Computer Architecture of Implementing the Marie Computer from Null and Lobur in the Logic Emulation Software, Multimedia Logic", Proceedings of the Workshop on Computer Architecture Education, 34th International Symposium on Computer Architecture, p 66--71. Google ScholarDigital Library
- Timothy D. Stanley, Dennis Fairclough, Roger deBry, and Reza Kamali-Sarvestani. 2013. Using a simple emulated computer to facilitate understanding in introductory computer programming and computer organization/architecture classes. J. Comput. Sci. Coll. 29, 2 (December 2013), 60--66. Google ScholarDigital Library
- Jeffrey A. Stone. 2006. Using a machine language simulator to teach CS1 concepts. SIGCSE Bull. 38, 4 (June 2006), 43--45. Google ScholarDigital Library
Index Terms
Creating a Computer Simulator as a CS1 Student Project
Recommendations
Using Foundational CS1 Curricula for Middle School & Early High School Computer Programming Education
SIGCSE 2023: Proceedings of the 54th ACM Technical Symposium on Computer Science Education V. 1Teaching computer programming to K-12 learners is widely recognized as important for invoking interest in computing in college and beyond. Specifically, with respect to middle school students, several computing education efforts do an excellent job of ...
Can CS1 Curricula Be Used For Middle School Computer Programming Education?
SIGCSE 2022: Proceedings of the 53rd ACM Technical Symposium on Computer Science Education V. 2Current computing education efforts do an excellent job of designing engaging curricula for middle school students through block-based platforms and multimedia project-based content. However, the programming concepts covered are notably and ...
Overview of the cyberTech-ITEST project: an initiative to attract and prepare under-represented students for tomorrow's careers in the computing sciences
SIGCSE '06: Proceedings of the 37th SIGCSE technical symposium on Computer science educationThis paper describes an NSF-funded initiative involving 600 underrepresented high school students and 60 teachers designed to introduce underrepresented students to the numerous and varied career opportunities in the computing sciences, prepare them to ...
Comments