Test
edit SideBar
|
CISC 181: Intro to Computer Science 2
Programming Fundamentals
- PF/Fundamental Constructs [4 of 9]
- Variables, types, expressions, and assignment
- Simple I/O
- Conditional and iterative control structures
- Modify and expand short programs that use standard conditional and iterative control structures and functions.
- Design, implement, test, and debug a program that uses each of the following fundamental programming constructs: basic computation, simple I/O, standard conditional and iterative structures, and the definition of functions.
- Choose appropriate conditional and iteration constructs for a given programming task.
- Apply the techniques of structured (functional) decomposition to break a program into smaller pieces.
- PF/Algorithmic Problem Solving [2 of 6]
- The role of algorithms in the problem-solving process
- Implementation strategies for algorithms
- Debugging strategies
- Identify the necessary properties of good algorithms.
- Create algorithms for solving simple problems.
- Use pseudocode or a programming language to implement, test, and debug algorithms for solving simple problems.
- Describe strategies that are useful in debugging.
propose trim to 3 of 10 -> 220 (hashing, advanced trees)
- PF/DataStructures [4 of 10]
- Arrays
- Representation of character data
- Strings and string processing
- Runtime storage management
- References
- Linked structures
- Discuss the use of primitive data types and built-in data structures.
- Describe common applications for each data structure in the topic list.
- Implement the user-defined data structures in a high-level language.
- Write programs that use each of the following data structures: arrays, strings, linked lists. [no trees, stacks, queues, dictionaries (associative structure not necessarily using hash)]
- PF/Object Oriented [7 of 8]
- Object-oriented design
- Encapsulation and information-hiding
- Separation of behavior and implementation
- Classes and subclasses
- Inheritance (overriding, dynamic dispatch)
- Polymorphism (subtype polymorphism vs. inheritance)
- Justify the philosophy of object-oriented design and the concepts of encapsulation, abstraction, inheritance, and polymorphism.
- Design, implement, test, and debug simple programs in an object-oriented programming language.
- Describe how the class mechanism supports encapsulation and information hiding.
- Design, implement, and test the implementation of “is-a” relationships among objects using a class hierarchy and inheritance.
- Compare and contrast the notions of overloading and overriding methods in an object-oriented language.
propose cut -> 220
- AL/Basic Analysis [1 of 4]
propose cut -> 220
- AL/Fundamental Algorithms [2 of 12]
propose trim to [1 of 7] -> 260
- AR/Digital Logic and Data Representation [2 of 7]
- Representation of text, audio, and images
- Understand how numbers, text, images, and sound can be represented in digital form and the limitations of such representations
propose cut -> 220
- OS/Overview of Operating Systems [1 of 2]
- PL/Overview [1 of 2]
- History of programming languages
- Brief survey of programming paradigms
- Procedural languages
- Object-oriented languages
- Functional language
- The effects of scale on programming methodology
- Summarize the evolution of programming languages illustrating how this history has led to the paradigms available today.
- Identify at least one distinguishing characteristic for each of the programming paradigms covered in this unit.
- Distinguish between programming-in-the-small and programming-in-the-large.
- PL/Basic Language translation [1 of 2]
- Comparison of interpreters and compilers
- Language translation phases (lexical analysis, parsing, code generation, optimization)
- Compare and contrast compiled and interpreted execution models, outlining the relative merits of each.
- Describe the phases of program translation from source code to executable code and the files produced by these phases.
- PL/Declarations and Types [1 of 3]
- The conception of types as a set of values together with a set of operations
- Declaration models (binding, visibility, scope, and lifetime)
- Overview of type-checking
- Garbage collection
- Explain the value of declaration models, especially with respect to programming-in-the-large.
- Identify and describe the properties of a variable such as its associated address, value, scope, persistence, and size.
- Discuss type incompatibility.
propose trim to 1 of 3 -> 220
- PL/Abstraction Mechanisms [2 of 3]
- Procedures, functions, and iterators as abstraction mechanisms
- --Parameterization mechanisms (reference vs. value)
- --Activation records and storage management
- Type parameters and parameterized types
- Modules in programming languages
- Explain how abstraction mechanisms support the creation of reusable software components.
- --Demonstrate the difference between call-by-value and call-by-reference parameter passing.
- Defend the importance of abstractions, especially with respect to programming-in-the-large.
- --Describe how the computer system uses activation records to manage program modules and their data.
propose increase to 9 of 10 <- 220
- PL/Object Oriented Programming [6 of 10]
- Object-oriented design
- Encapsulation and information-hiding
- Separation of behavior and implementation
- Classes and subclasses
- Inheritance (overriding, dynamic dispatch)
- Polymorphism (subtype polymorphism vs. inheritance)
- Class hierarchies
- Collection classes and iteration protocols [not full coverage]
- --Internal representations of objects and method tables
- Justify the philosophy of object-oriented design and the concepts of encapsulation, abstraction, inheritance, and polymorphism.
- Design, implement, test, and debug simple programs in an object-oriented programming language.
- Describe how the class mechanism supports encapsulation and information hiding.
- Design, implement, and test the implementation of "is-a" relationships among objects using a class hierarchy and inheritance.
- Compare and contrast the notions of overloading and overriding methods in an object-oriented language.
- Explain the relationship between the static structure of the class and the dynamic structure of the instances of the class.
- Describe how iterators access the elements of a container.
Software Engineering
propose cut -> 275
- SE/Software Design [1 of 8]
- SE/Using APIs [1 of 5]
- Programming using APIs
- Class browsers and related tools
- Explain the value of application programming interfaces (APIs) in software development.
- Use class browsers and related tools during the development of applications using APIs.
- SE/ToolsAndEnvironments [1 of 3]
- Programming environments
- Testing tools including static and dynamic analysis tools
- Analyze and evaluate a set of tools in a given area of software development (e.g., management, modeling, or testing). [testing only]
Optional
propose add 3 of 4 <- 275
- PF/EventDrivenProgramming
- Event-handling methods
- Event propagation
- Exception handling
- Explain the difference between event-driven programming and command-line programming.
- Design, code, test, and debug simple event-driven programs that respond to user events.
- Develop code that responds to exception conditions raised during execution.
Net changes to core hours (not including optional):
181: 37 -> 32
220: 22 -> 25
260: 9 -> 10
275: 26 -> 27
Summary of changes: some data structures and OS/compiler issues moved to 220, most OO moved from 220 to 181, some SE moved to 275, data representation moved to 260
|