Skip to Content

University of Colorado Boulder
Search

Search

Other ways to search:

  • Events Calendar
  • Campus Map
BS in Applied Computer Science
College of Engineering and Applied Science
BS in Applied Computer Science

Main menu

  • Home
  • Academics
  • Admissions
  • Cost
  • Careers
  • People
  • Nondegree Option

Secondary Menu

  • Request Information
  • Current Student Resources

Mobile menu

  • Home
  • Academics
  • Admissions
  • Cost
  • Careers
  • People
  • Nondegree Option
  • Request Information
  • Current Student Resources

CSPB 2400 - Computer Systems

Course Details

*Note: This course description is only applicable for the Computer Science Post-Baccalaureate program. Additionally, students must always refer to course syllabus for the most up to date information. 

  • Credits: 4.0 
  • Prerequisites: CSPB or CSCI 2270 Data Structures with minimum grade C-. This course requires a basic understanding of the C or C++ programming language including the user of pointers.
  • Minimum Passing Grade: C-
  • Textbook: "Computer Systems: A Programmers Perspective", 3rd Edition, David O’Halloran and Randall Bryant (domestic, international or online edition)

Brief Description of Course Content

Covers how programs are represented and executed by modern computers, including low level machine representations of programs and data, an understanding of how computer components and the memory hierarchy influence performance.

Topics include data and program representations, computer organization effect on performance and mechanisms used for program isolation and memory management.  

Specific Goals

Specific Outcomes of Instruction
  • Explain and perform common logical operations (and, or, negation, conversion) on binary variables and binary vectors and identify and apply common boolean algebraic laws such as DeMorgan’s laws, idempotence, etc.
  • An ability to translate between integer binary and decimal data, detect and identify the outcome of operations due to limited data representations (e.g. overflow), distinguish between the data representations and ranges for signed and unsigned data types.
  • Translate IEEE floating point representation to and from binary and real numbers and identify the limitations of fixed-precision floating point representation.
  • An ability to related compiler-generated assembly programs to the corresponding higher level language structures with sufficient ability to enable debugging high level programs. Given a machine language representation of a program compiled in a higher level language, students should be identify and describe the operation of conditional statements, loops, function calls, switch statements.
  • The ability to explain how higher level language functions are implemented using the stack of an underlying machine, including how local variables are allocated, trace the execution due to recursion and identify and trace the effect of buffer-overflow of the stack.
  • An ability to explain how high level program structures can be restructured to facilitate optimization for pipelined architectures and cache memory hierarchies.
  • An ability to explain how computer memory is organized and represented both to the programmer and to the computer architecture by the operating system through the use of virtual memory mapping.
  • An understanding of how to use asynchronous signals, concurrent programs and the programming issues that arise with such programs, such as race conditions.
  • Identify and construct processes on a common computer platform, identify and perform basic synchronization between processes and understand the costs and benefits of using processes.
  • An ability to explain how global memory, function-local and dynamic memory allocation is performed and the performance benefits of each form of memory allocation.
  • An ability to explain how programming errors may affect program correctness, including errors in function calls, memory allocation, integer and floating point data representations.
  • An ability to measure program performance and use that measured information to determine how to improve program performance.
  • An ability to use a machine-level debugger and inspect the memory and register state of programs.

Brief List of Topics to be Covered
  • Vectors
  • Linear functions
  • Number representation in computers
  • Program representation
  • Computer security: stack overflows and code injection
  • Computer organization and its impact on computer performance
  • Memory hierarchy and its impact on computer performance and security
  • Cache organization
  • Processes, exceptions and signals
  • Virtual and dynamic memory management
  • Linking and loading programs

Mathematical Concepts Used

Boolean logic & binary

 

Return to Course List

BS in Applied Computer Science

The Bachelor of Science in Applied Computer Science is awarded by the College of Engineering & Applied Science with some administrative support provided by the Division of Continuing Education.

  Contact Us
CSPBonline@colorado.edu
303-492-2518

University of Colorado Boulder

University of Colorado Boulder
© Regents of the University of Colorado
Privacy • Legal & Trademarks • Campus Map

Return to the top of the page