A Project-Based Learning Approach to Teaching Computer Architecture

This article describes details of design and implementation of an upper-level (core-Tier2) computer organization and architecture course with an online hands-on component as a blended learning environment. The revised course content is based on contemporary pedagogical approaches: blended learning, flipped classroom, lead learner, and project-based learning. While revising, ACM/IEEE-CS computing curricula guidelines were aligned with new modules being implemented. Online hands-on component of the course have been focused on using a single-board computer, and associated hardware to provide students relevant skills in designing projects that include hardware and software components. Research data collected after first two cohorts of the revised course show that implementation of the course was received well by the students, which improved the overall course reviews, while maintaining relevant levels of curricular material that includes core knowledge areas. Received on 02 February 2019; accepted on 27 November 2019; published on 17 December 2019


Introduction
Following the active learning approach in [2,3,17], this article describes design of revising an upperlevel (i.e., core-Tier2) computer organization and architecture course with an online hands-on component as a blended learning environment [8,9,13]. During revising the course, we realigned core modules with the Architecture knowledge area specified in ACM/IEEE joint task force computing curricula [1], and implemented core bodies of knowledge specified, with respect to computer organization and architecture. Most curricula in computer architecture include a two or three-course sequence, and the two common courses are computer organization 1 , and computer architecture 2 , typically offered in computer science and engineering undergraduate programs. * Email: erdild@sacredheart.edu 1 Common prerequisite to the computer architecture course. 2 Depending on science or engineering focus, the first course may optionally be Digital Design, making organization and architecture courses second, and third in the sequence, respectively.
Collectively, these courses aim to equip students with hardware-related skills, recognition of the hardwaresoftware interface, and a perspective on lower-level problems and common solutions on computers, storage, and related hardware, mainly focusing on implications of von Neumann Architecture into higher level software. In particular, the following knowledge areas constitute computer architecture curriculum 3 : Computer organization [4,7], and computer architecture [10,12,14] courses are ideally offered as two separate courses with a pre-requisite relationship between, and typically in Sophomore, and Junior years, respectively 4 . Due to credit requirements, some computer science departments opt in offering a combined organization and architecture course.
Based on these considerations in our design, the rest of this article provides details of our implementation for a combined computer organization and architecture course, as the sole hardware focused course in computer science department of a liberal arts college. The course is offered as a required course, as part of the fouryear undergraduate degree requirements, in computer science, software development, information technology, game design and development programs 5 , as well as an elective course for a masters degree in computer science. After course redesign, it has been offered first in Fall 2016, and has been continuously offered since then. Data presented in this article were collected during the inaugural year of offering the course for two cohorts: in Fall 2016, and Spring 2017 semesters.
Modules of the hands-on component are based on three particular contemporary curricular guidelines: blended learning, flipped classroom, lead learner, and project-based learning. Using these main approaches, the laboratory component of computer architecture course has been designed to complement the theoretical part and also provide students hands-on skills in working with single-board computers [11,16], as well as a set of sensors, components, and associated programming interfaces that interact together with the computers.
Another important aspect of this course is to introduce a project component that bodes well with the theoretical part of the course, and hands-on modules, and allows students to design and implement an idea based on what they have learned in class. Students also design and implement a small project with a mandatory hardware component using a single-board computer. As most of the students take this course before their senior year, students reacted well to the idea of designing a small-scale project that would serve as training for their senior capstone projects.
During hands-on modules that started in the first week of the semester, students begin to use Arduinobased single-board computers, and learn how to use small electronic circuits as well as a breadboard and other IC-modules that second-year engineering students typically experiment in a digital design laboratory. This has been a positive learning experience for students as the computer science curricula offered in the department is mostly classical, and did not focus on computer architecture related knowledge areas to a great extent, whereas a large portion of the theoretical part in the course assumed some level of experience. Students then pick a hardware-based project, and complete their projects as an online module, while also completing hands-on exercises as learning activities. Completing basic hands-on exercises as the laboratory component at their own pace provided students the confidence to implement the projects that they have picked.

Course within the Curriculum
In the recommended course sequence, combined organization and architecture course is offered in the Fall semester of Junior year (i.e., fifth semester). The course is offered as a required course, as part of the fouryear undergraduate degree requirements, in computer science, software development, information technology, game design and development programs 6 , as well as an elective course for a masters degree in computer science. Prior to this course, students in the computer science program take the following courses as part of their major: • Database Management (sophomore) • Internetworking (sophomore) • System Design (sophomore) • Ethics (junior, at the same semester as Computer Organization and Architecture course) 6 The course is available to students studying information technology and game design and development; however most of them take a lighter computer organization course that does not involve hands-on projects.
2 EAI Endorsed Transactions on e-Learning 10 2018 -07 2020 | Volume 6 | Issue 19 | e2  After this course, students take seven more Computer Science electives, up to 11 credits as a choice of internship or electives, as well as a two-semester long Senior Capstone course.

Course Design
The course was originally designed to introduce computer organization and architecture related concepts, mainly focusing on assembly level machine organization knowledge area, and focused on a particular computer architecture and its assembler language as the hands-on part. Over the years it has been offered by various extended (i.e., adjunct) faculty, and has not been the favorite course neither for faculty nor for students. Within the department-level goals that are tied to selfassessment, the course has the following objectives: • Understand the basics of computer hardware and how software interacts with computer hardware.
• Know the organization of the central processing unit (CPU) and memory hierarchy.
• Use critical thinking to make informed decisions in the selection of hardware.
• Demonstrate how memory caches and virtual memory work.
• Learn and demonstrate how program performance is affected by processor cache sizes.
• Understand how the architecture affects program performance. 3 EAI Endorsed Transactions on e-Learning 10 2018 -07 2020 | Volume 6 | Issue 19 | e2  • Demonstrate how instructions can be implemented in a chip.
• Learn how to use Java or C or assembly language to manipulate registers on a computer architecture performing a specific operation with data.
• Learn how computer organization influences high-level languages, and vice versa.
• Develop communication skills in the area of computing technology.
With respect to these facts, evaluation data, departmental expectations, and the need to revise the course to align with ACM/IEEE curricula [1], as well as provide a contemporary pedagogical methodology, following course learning measures were defined and employed: • Create a program in C or assembly language that works with data that fits and exceeds processor cache sizes, and measure the performance impacts of doing so.
• Write a simple program in Java or C or assembly language to implement a high level program segment.
• Using a single-board computer (e.g., an Arduino board), control an LED display via software.
• Design and implement a small project involving a single-board computer.

Topical Outline
Theoretical part of the course was adequate, and the textbook was well received. The hands-on part of the course was consistently being ranked low in student evaluations. Our initial approach was to revamp the course by evaluating several single-board computer options, and related curricular material. We have eventually decided on using Arduino single-board computers [15], with an accompanying laboratory book that provides step-by-step instructions on completing each module in detail [6].
After revising the hands-on component, we have decided to update the textbook to better align with weekly hands-on activities, while still preparing users with adequate theoretical material, both for computer organization, and also for computer architecture parts. We have adopted Englander's textbook [5], as it also provides students a reference to how the computer is organized, with a simplified machine reference (i.e., the Little Man Computer), with accompanying machinelevel instruction set, in case students choose to use higher-level programming languages to design and implement their projects.
This way, all the students have a baseline understanding of a simplified reference architecture and an instruction set, which greatly covers the general curricular expectations on assembly level machine organization, as well as machine level representation of data. Figure 1 shows the weekly schedule of the course. Overall, the course has two main sections: the first six weeks covers topics such as introduction to computer system concepts and architecture, number systems, and data formats. Post mid-term concepts start expanding into core computer architecture concepts, such as the CPU and memory, input/output, and peripherals.
Laboratory components have been aligned to create a separate online hands-on track that provides an experiential learning hour, and the two tracks (theoretical and hands-on) marge together toward the last third part of the course (starting at around week 11) to encourage students to apply what they have learned in theoretical track to the design of their project. Since the hands-on track is provided mainly as an online activity, students have the flexibility to extend learning activities with hardware components, and derive ideas and new approaches to the design of their individual projects. This online hands-on activity as a blended component was evaluated to be one of the favorite options in this course by students across both cohorts.

Opinion Surveys and Results
At the end of each cohort, a set of questions has been administered to students as a non-mandatory, online opinion survey via Google Forms, in addition to the paper-based course evaluations administered by the college. The online survey is administered toward the end of the semester, one week before paper-based course evaluations, and had the following preamble text as Figure 2   • (b) I was able to follow the material without being too overwhelmed.
• (c) The course materials contributed to my learning.
• (d) The objectives of the course were clear.
• (e) The instructor raised questions or problems that encouraged me to think critically.
• (f) My interest in the subject matter was enhanced by the instructor's enthusiasm.
Responses to this general question is then reinforced in a set of detailed questions provided about each module of the course, in a subsequent survey page. Immediately after that first question, main components of the course were asked to be evaluated as a multiple answer question, as Figure 4 shows.
Students' overall experience with the course showed the largest amount of change between two cohorts. While in the first cohort, students had a bigger skew toward the higher-end of satisfaction, in the second cohort, the overall satisfaction results exhibited a normal distribution (i.e., the bell curve), with the peak of the curve around 8/10. We attribute this to the effect of the first time offering of this course, which incorporates a single-board computer based hands-on module for the first time in the department, and the associated excitement around it. Also, during the Fall cohort, students were able to showcase their projects to the faculty, whereas the Spring cohort was not able to do it due to graduation calendar and related events scheduled toward the end of the Spring semester. Average experiences were 7.68/10 and 7.38/10 for Fall and Spring cohorts, respectively. Prior to redesign of the course, overall experience of the course averaged 3.02/5 (normalized to 6.04/10) for about ten semesters over a seven year period, with average of last three semesters Figure 5. Overall experience of students. Fall cohort satisfaction displays a distinctive high-approval rate, and we attribute this due to the excitement with first time offering of this course, as well as the opportunity to showcase design projects to the faculty in the department. Spring cohort opinions exhibit regular bell curve peaked around 8/10, which is expected.

Summary
This article provides details of a revised computer organization and architecture course, offered primarily to juniors in the computer science department of a liberal arts college. The ACM/IEEE-CS curricular standards-aligned, online hands-on and project-based learning exercises were well-received by students and have consistently ranked high compared to other learning activities. These hands-on modules provided as the core blended part of the course also boosted overall satisfaction of students, both for the course, as well as for instructor. The tradeoff was to remove the classical, assembly-based machine level programming part as the core laboratory activity. However, students were still able to learn about the assembly level machine organization knowledge area subjects, and were able to complete machine level programming exercises by relying on a simulated computer platform provided in the textbook.