ACM Learning Outcomes

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

ACM Learning Outcomes

tansaku
I was just working through the new ACM Curricular guidelines trying to get a list of those learning outcomes met by this course.  I think I probably won't do the course complete justice till after I've taught it, but if anyone has more experience with the course and is familiar with the new guidelines:

http://www.acm.org/education/CS2013-final-report.pdf

I'd love to get your input.  Here's my first draft:


AR. Architecture and Organization [core]

AR/Digital Logic and Digital Systems

* Articulate that there are many equivalent representations of computer functionality, including logical expressions and gates, and be able to use mathematical expressions to describe the functions of simple combinational and sequential circuits. [Familiarity]
* Design the basic building blocks of a computer: arithmetic-logic unit (gate-level), registers (gate-level), central processing unit (register transfer-level), memory (register transfer-level). [Usage]
* Use CAD tools for capture, synthesis, and simulation to evaluate simple building blocks (e.g., arithmetic- logic unit, registers, movement between registers) of a simple computer design. [Usage]

AR/Machine Level Representation of Data

* Explain why everything is data, including instructions, in computers. [Familiarity]
* Explain the reasons for using alternative formats to represent numerical data. [Familiarity]
* Describe how negative integers are stored in sign-magnitude and twos-complement representations.
[Familiarity]
* Explain how fixed-length number representations affect accuracy and precision. [Familiarity]
* Describe the internal representation of non-numeric data, such as characters, strings, records, and arrays.
[Familiarity]
* Convert numerical data from one format to another. [Usage]
* Write simple programs at the assembly/machine level for string processing and manipulation. [Usage]

AR/Assembly Level Machine Organization

* Explain the organization of the classical von Neumann machine and its major functional units. [Familiarity]
* Describe how an instruction is executed in a classical von Neumann machine, with extensions for threads,
multiprocessor synchronization, and SIMD execution. [Familiarity] - 64 -
* Describe instruction level parallelism and hazards, and how they are managed in typical processor pipelines. [Familiarity]
* Summarize how instructions are represented at both the machine level and in the context of a symbolic assembler. [Familiarity]
* Demonstrate how to map between high-level language patterns into assembly/machine language notations. [Familiarity]
* Explain different instruction formats, such as addresses per instruction and variable length vs. fixed length formats. [Familiarity]
* Explain how subroutine calls are handled at the assembly level. [Familiarity]
* Explain the basic concepts of interrupts and I/O operations. [Familiarity]
* Write simple assembly language program segments. [Usage]
* Show how fundamental high-level programming constructs are implemented at the machine-language
level. [Usage]

AR/Memory System Organization and Architecture

* Describe the principles of memory management. [Familiarity]
* Explain the workings of a system with virtual memory management. [Familiarity]

AR/Functional Organization

* Compare alternative implementation of datapaths. [Familiarity]
* Discuss the concept of control points and the generation of control signals using hardwired or
microprogrammed implementations. [Familiarity]
* Explain basic instruction level parallelism using pipelining and the major hazards that may occur.
[Familiarity]
* Design and implement a complete processor, including datapath and control. [Usage]
* Determine, for a given processor and memory system implementation, the average cycles per instruction.
[Assessment]

OS. Operating Systems [core]

OS/Overview of Operating Systems

* Explain the objectives and functions of modern operating systems. [Familiarity]
* Analyze the tradeoffs inherent in operating system design. [Usage]
* Describe the functions of a contemporary operating system with respect to convenience, efficiency, and the
ability to evolve. [Familiarity]

OS/Operating System Principles

* Explain the concept of a logical layer. [Familiarity]
* Explain the benefits of building abstract layers in hierarchical fashion. [Familiarity]
* Describe the value of APIs and middleware. [Assessment]
* Describe how computing resources are used by application software and managed by system software.
[Familiarity]

OS/Memory Management

* Explain memory hierarchy and cost-performance trade-offs. [Familiarity]
* Summarize the principles of virtual memory as applied to caching and paging. [Familiarity]
* Evaluate the trade-offs in terms of memory size (main memory, cache memory, auxiliary memory) and
processor speed. [Assessment]

OS/Virtual Machines  

* Explain the concept of virtual memory and how it is realized in hardware and software. [Familiarity]
* Differentiate emulation and isolation. [Familiarity]
* Evaluate virtualization trade-offs. [Assessment]

OS/File Systems

* Describe the choices to be made in designing file systems. [Familiarity]
* Compare and contrast different approaches to file organization, recognizing the strengths and weaknesses
of each. [Usage]
* Summarize how hardware developments have led to changes in the priorities for the design and the
management of file systems. [Familiarity]

PL. Programming Languages [core]

PL/Language Translation and Execution

* Distinguish a language definition (what constructs mean) from a particular language implementation (compiler vs. interpreter, run-time representation of data objects, etc.). [Familiarity]
*  Distinguish syntax and parsing from semantics and evaluation. [Familiarity]
*  Sketch a low-level run-time representation of core language constructs, such as objects or closures.
[Familiarity]
*  Explain how programming language implementations typically organize memory into global data, text,
heap, and stack sections and how features such as recursion and memory management map to this memory
model. [Familiarity]

PL/Syntax Analysis  

* Use formal grammars to specify the syntax of languages. [Usage]
* Use declarative tools to generate parsers and scanners. [Usage]
* Identify key issues in syntax definitions: ambiguity, associativity, precedence. [Familiarity]

PL/Compiler Semantic Analysis

* Identify all essential steps for automatically converting source code into assembly or other low-level languages. [Familiarity]
*  Generate the low-level code for calling functions/methods in modern languages. [Usage]
 
PL/Runtime Systems

* Compare the benefits of different memory-management schemes, using concepts such as fragmentation, locality, and memory overhead. [Familiarity]
* Discuss benefits and limitations of automatic memory management. [Familiarity]
* Explain the use of metadata in run-time representations of objects and activation records, such as class
pointers, array lengths, return addresses, and frame pointers. [Familiarity]


Best regards
Sam Joseph, Ph.D.
Associate Professor,
Department of Computer Science
Hawaii Pacific University








 
Sam Joseph, Ph.D.
Associate Professor
Department of Computer Science
Hawaii Pacific University
Reply | Threaded
Open this post in threaded view
|

Re: ACM Learning Outcomes

ybakos
Have you worked through the materials of the book?

Keep in mind that Elements of Computing Systems isn't a formal course - it's a book, really - and so learning outcomes for a course that uses Elements of Computing Systems will vary widely. For example, when I teach it, it includes outcomes from PDB, SDF, SE, SF and SP.

But I would say that any course that uses the Elements materials effectively would also address some outcomes in at least PDB, SDF, SE and SF.

Yong Bakos
Center of Creative Computation
SMU.edu


Reply | Threaded
Open this post in threaded view
|

Re: ACM Learning Outcomes

tansaku
Thanks Yong.  I am working through the materials in the book as part of the course I am teaching based on the book.  I think I probably won't have a really accurate list of the learning outcomes until we have finished the course and I've done battle with all the issues arising :-)

To summarize my current guess in your format, I'm suggesting learning outcomes in
AR: Architecture and Organization
OS: Operating Systems
PL: Programming Languages

and you are suggesting:

PBD(?): Platform Based Development
SDF: Software Development Fundamentals
SE: Software Engineering
SF: Systems Fundamentals

Although clearly the software for Nand2Tetris is a platform, it seems like PBD is intended for mobile, web, game and robotics.  I guess one could argue for PBD/Industrial Platforms and PBD/Game Platforms, but it seems borderline.

I can see that SDF and SF are relevant, and I guess I'll be able to pinpoint the specific learning outcomes there eventually.  I'm slightly skeptical about SE, since I teach a separate course in that, and it doesn't seem like there's space to get into that.

Guess I will take another pass if I'm likely to ever teach the course again :-)

Sam Joseph, Ph.D.
Associate Professor
Department of Computer Science
Hawaii Pacific University
Reply | Threaded
Open this post in threaded view
|

Re: ACM Learning Outcomes

ybakos
"For example, when I teach it ..." (regarding SE).

My students use distributed version control, bug tracking, collaboration, and address software engineering issues and techniques when building the software stack.
Reply | Threaded
Open this post in threaded view
|

Re: ACM Learning Outcomes

tansaku
very cool
Sam Joseph, Ph.D.
Associate Professor
Department of Computer Science
Hawaii Pacific University