Please enable JavaScript to use CodeHS

Standards Framework

for Indiana Computer Science


Standards in this Framework

Standard Description
7352.D1.1 Discuss software development methodology that include fundamental design concepts and principles, Structured and Iterative design, UML (Unified Modeling Language).
7352.D1.2 Demonstrate fundamental programming constructs such as understanding of language syntax, semantics and style standards including documentation and commenting, using IDEs to create, execute, test, and debug programs utilizing standard software development design and methodologies.
7352.D1.3 Analyze and explain the behavior of simple programs utilizing variables, expressions, assignments, I/O, control structures, functions, parameter passing, preconditions, postconditions, and invariants.
7352.D1.4 Utilize fundamental data types including Primitive types (Integers, Real Numbers, Booleans, and Characters), Pointers, Arrays, Records/Structures, Strings, Enumerations
7352.D1.5 Use the techniques of decomposition to modularize a program.
7352.D1.6 Apply a variety of strategies to the testing and debugging of simple programs including: ● Conduct code reviews (focused on common coding errors and the extent to which the code meets documentation and programming style standards) on program components. ● Differentiate between program validation and verification. ● Ensure programs use defensive programming techniques, including input validation, type checking, and protection against buffer overflow. ● Implement refactoring within given program components.
7352.D2.1 Explain the role of algorithms in problem-solving including: ● Analyze and compare the best, average, and worst-case behaviors and performance of an algorithm for given problems with various input sizes ● Implement a basic numerical algorithm and apply to a given problem. ● Discuss the halting problem and why it has no algorithmic solution. ● Investigate factors other than computational efficiency that influence the choice of algorithms.
7352.D2.2 Analyze machine level representation of data including: ● Bits, bytes, and words ● Numeric data representation (Binary, Hexadecimal, BCD, 1's Complement, 2's Complement, and Floating Point format) ● Non-numeric data (Characters, Images, Sounds, Video) ● Illustrate color models and their use in computer graphics. ● Conversion of numerical data from one format to another ● Effect of fixed-length number representations on accuracy and precision
7352.D2.3 Describe, compare, and contrast the components of Computer Architecture which include all portions of the Von Neumann machine as well as assembly/machine language. Explore the impact of memory latency on execution time (Von Neumann Bottleneck).
7352.D2.4 Examine major objectives, functions, features, and concepts of modern operating systems. ● Discuss the role, purpose of operating systems ● Compare prevailing types of operating systems. ● Discuss potential threats to operating systems and appropriate features used to provide protection and security. ● Diagram the interaction of an Application Programming Interface (API) with an operating system. ● Illustrate how applications use computing resources managed by the operating system and explain the need for concurrency and common methods to implement concurrency. ● Illustrate the principles of memory management including virtual memory, paging, thrashing, and partitioning. ● Diagram the physical hardware devices and the virtual devices maintained by an operating system.
7352.D2.5 Investigate principles of secure design. ● Analyze the tradeoffs associated with designing security into a product. ● Implement input validation in applications ● Discuss the security implications of relying on open design vs the secrecy of design. ● Explain the tradeoffs of developing a program in a type-safe language. ● Investigate potential errors detected from both strong-type and weak-type languages. ● Investigate potential vulnerabilities in provided programming code. ● Investigate common coding errors that introduce security vulnerabilities, such as buffer overflows, integer errors, and memory leaks.
7352.D2.6 Assess human-computer interaction and design issues that analyze the importance of humancentered software and then implement a simple usability test for an existing software application.