June 14, 2009
June 14, 2009
June 17, 2009
Electrical and Computer
14.31.1 - 14.31.7
A Gentle Introduction to Addressing Modes in a First Course in Computer Organization
This paper describes the reform of a sophomore-level course in computer organization for the Computer Science BS curriculum at The University of Texas at El Paso, where Java and integrated IDEs have been adopted as the first and primary language and development environments. This effort was motivated by faculty observations and industry feedback indicating that upper-division students and graduates were failing to achieve mastery of non- garbage-collected, strictly imperative languages, such as C. The similarity of C variable semantics to the underlying machine model enables simultaneous mastery of both C and assembly language programming and exposes implementation details that are difficult to teach independently, such as subroutine linkage and management of stack frames. An online lab manual has been developed for this course that is freely available for extension or use by other institutions.
Our previous papers reported on pedagogical techniques for facilitating student understanding of the relationships between high-level language constructs, such as algebraic expression syntax, block-structured control-flow structures, and composite data types, along with their implementations in machine code. While this integrated approach to introducing control-flow structures has been successful, many students have been confused by the large number of different addressing modes. The present paper describes further extensions of this integrated C- and-assembly language pedagogical approach in which addressing modes are introduced incrementally as solutions to pragmatically motivated problems. Initial results, as measured by quizzes and in-class exercises, are highly encouraging.
We report on reforms to a sophomore-level course in computer organization at an ABET- accredited Computer Science Department. The department has adopted an object-first curriculum as defined by the ACM Computing Curriculum 2001 Report4 where Java is used as the principal teaching language in most major coursework. As we reported previously,1,2 after adoption of this object- and Java-centric pedagogical approach, faculty teaching upper-division courses and potential employers detected a dramatic reduction in upper-division to understand or design programs written in strictly imperative languages that reflect the semantics of the underlying memory model, such as C. Schonberg and Dewar report similar observations of students graduating from other programs that adopted Java- centric curricula.5 While these deficits are not common at schools with architecture-first curricula,3,4,5 object-centric curricula are asserted to provide complementary advantages. Rather than taking a position on whether architecture-first curricula are strictly superior to object-first, we implemented compensatory reforms that appear to be successful, as observed by upper division systems faculty and employers who report that recent graduates have attained a dramatically improved ability to program in C.
ASEE holds the copyright on this document. It may be read by the public free of charge. Authors may archive their work on personal websites or in institutional repositories with the following citation: © 2009 American Society for Engineering Education. Other scholars may excerpt or quote from these materials with the same citation. When excerpting or quoting from Conference Proceedings, authors should, in addition to noting the ASEE copyright, list all the original authors and their institutions and name the host city of the conference. - Last updated April 1, 2015