|
2022-2023 Catalog [ARCHIVED CATALOG]
|
CSCI 201 - Computer Science II PREREQUISITES: CSCI 101 - Computer Science I or (SDEV 140 and CSCI 179 ) PROGRAM: Computer Science CREDIT HOURS MIN: 3 LECTURE HOURS MIN: 2 LAB HOURS MIN: 2 DATE OF LAST REVISION: Fall 2020
Provides a working understanding of the fundamentals of procedural and object-oriented program development using structured, modular concepts and modern object-oriented programming languages. Reviews control structures, functions, data types, variables, arrays, and data file access methods. The course is a second level computer science course introducing object oriented computer programming, using a language such as Java or C. Object-oriented concepts studied include classes, objects, inheritance, polymorphism, operator overloading, exception handling, recursion, abstract data types, streams and file I/O. Students will explore programming concepts such as software reuse, data abstraction and event-driven programming.
MAJOR COURSE LEARNING OBJECTIVES: Upon successful completion of this course the student will be expected to:
- Demonstrate the basic procedural concepts of computer programming through development of programs that utilize:
- arithmetic operators, expressions and statements,
- reference data types,
- input/output,
- primitive and abstract data types,
- selection and repetition statements,
- user defined methods and functions,
- collections including arrays, lists, vectors, stacks, and queues,
- streams to create and access data files, and
- common/standard language libraries.
- Demonstrate the basic object-oriented concepts of computer programming
- Compare and contrast functional and object-oriented programming paradigms
- Implement OOP constructs, including encapsulation, abstraction, inheritance, and polymorphism
- Utilize immutable and mutable variables in class objects
- Use access and visibility modifiers to secure class data and methods.
- diagram control flow in a program using dynamic dispatch
- Design and implement a simple class hierarchy using superclasses, subclasses, and abstract classes.
- Overload functions and operators
- Design and implement generic classes with templates
- Identify the data components and behaviors of multiple abstract data types.
- Apply a variety of strategies to the testing and debugging of programs.
- Develop Graphical User Interfaces/Event Driven Programs:
- Explain basic principles of computer graphics including 2D and 3D objects, transformations, clipping, windowing, rendering, lighting and ray tracing.
- Illustrate color models and their use in computer graphics.
- Write a simple application that uses a modern graphical user interface.
- Create an interactive program using an event-driven style.
- Discuss the usage of information hiding through steganography in images, messages, videos, or other media files.
- Discuss software engineering, software maintenance and software reuse:
- Illustrate the concepts of modeling and abstraction with respect to problem solving.
- Diagram the phases of the secure software development lifecycle (SecSDLC).
- Describe the concept of finite state machines
- Describe security as a continuous process of tradeoffs, balancing between protection mechanisms and availability.
- Illustrate the security implications of relying on open design vs the secrecy of design.
- Apply consistent documentation and program style standards
- Demonstrate basic concepts of networking and data communications
- Diagram the basic structure of the Internet.
- Diagram the layers of the OSI model, including associated protocols (TCP/UDP, Socket APIs, and Application Layer Protocols)
- Categorize the principles used for naming schemes and resource location. NC
- Implement a simple distributed network application.
- Describe security concerns in designing applications for use over wired and wireless networks.
- Demonstrate the principles of secure programming and design
- Investigate potential vulnerabilities in provided programming code.
- Create programs which use defensive programming techniques, including input validation, type checking, exception handling and protection against buffer overflow.
- Analyze the interaction between a security mechanism and its usability.
- Investigate potential vulnerabilities in provided programming code.
- Investigate common coding errors that introduce security vulnerabilities, including buffer overflows, integer errors, and memory leaks.
- Discuss potential errors and security implications from both strong-type and weak-type languages.
- Evaluate the risks in using third-party applications, software tools, and libraries.
- Carry out a code review on a program component using a provided security checklist.
- Describe potential security vulnerabilities in event-driven GUI applications.
COURSE CONTENT: Topical areas of study include -
- Accessing data files and streams
- Inheritance and Polymorphism
- Arithmetic operators
- Integrated Development Environments
- Classes and objects
- Methods and functions
- Code Reviews
- Security
- Collections
- Software engineering
- Debugging
- Software maintenance
- Event-driven programming
- Software reuse
- Exception handling
- Standard Library
- Expressions and statements
- Strings
- Graphics and Graphical User Interfaces
- Variables/Constants
Course Addendum - Syllabus (Click to expand)
|
|