Form #3A – Course Outline Instructions for completing Form #3A are in Section II.A.4 in the EPC Manual ARNOLD, MARYLAND Course Information: Course Name: Computer Science 1 Course Number: CSI 163 Credit Hours: 4 Initiator: Trish Gregory, Krysten Hall School: Technologies Division Department: Computer Technologies Date: March, 2014 Catalog Description: CSI 163 Computer Science 1 4 credit hours – three hours of lecture and two hours laboratory weekly; one term Use fundamental design principles and problem-solving techniques introduced in CSI 117 to develop computer algorithms. Implement algorithms as programs coded in Java, an object-oriented programming language. Learn the data types, control structures, classes, arrays, and I/O in the Java programming language. Learn graphical user interfaces, inheritance, polymorphism, recursion, and exceptions. Emphasize style, documentation, solution robustness, and conformance with specifications throughout course work. Lab fee $25. Prerequisite: CSI 117 or permission of Computer Technologies Director or Computer Science Coordinator. Note: CSI 117 prerequisite is waived for students that complete AP Computer Science. Credit is not given for both CSI 161 and CSI 163 and CSI 162 and CSI 163. Division Of Subject Matter: Lecture Hours Main Topics 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 14.0 15.0 Overview of Programming Languages Software Tools and Environments Fundamental Programming Constructs Algorithms and Problem Solving Fundamental Data Structures Declarations and Data Types Object-Oriented Design Object-Oriented Concepts Subclasses and Inheritance Polymorphism Input and Output Exceptions and Exception-handling Software Validation Professional and Ethical Responsibilities Graphical User Interfaces Testing Total EPC Form 3 – Revised 7/13 Lab Hours 1 1 3 3 4 2 4 6 6 2 2 4 1 1 1 4 0 0 3 4 3 0 0 6 4 2 3 3 0 0 2 45 30 Detailed Course Outline Main Topic Lecture Hours Lab Hours 1.0 Overview of Programming Languages 1.1. History of programming languages 1.2. Brief survey of programming languages 1.2.1. Procedural languages 1.2.2. Object-oriented languages 1.2.3. The effects of scale on programming methodology 2.0 Software Tools and Environments 2.1.1. Integrated Development Environments (IDEs) 2.1.2. Unified modeling language (UML) tools 3.0 Fundamental Programming Constructs 3.1. Basic syntax and semantics of a higher-level language 3.2. Variables, types, expressions, and assignment 3.3. Conditional and iterative control structures 3.4. Functions and parameter passing 4.0 Algorithms and Problem Solving 4.1. The role of algorithms in the problem-solving process 4.2. Formulating precise specifications for a problem and its solution 4.3. Modular design of problem solutions 4.4. Preconditions and post-conditions 4.5. Debugging strategies 4.6. Recursion 5.0 Fundamental Data Structures 5.1. Primitive types 5.2. Reference types 5.3. Strings and string processing 5.4. Arrays and array processing 5.4.1. One Dimensional Arrays 5.4.2. Two Dimensional Arrays 5.5. Data representation in memory 1 0 1 0 3 3 3 4 4 3 6.0 Declarations and Data Types 6.1. The concept of types as a set of values together with a set of operations 6.2. Declaration models (scope, static and non-static data) 6.3. Overview of type checking 6.4. Garbage collection 7.0 Object-Oriented Design 7.1. Model-view-control design pattern 7.2. Collaboration among classes 7.3. Relationships (Is-a, has-a) 7.4. Class hierarchies 7.5. UML (Unified Modeling Language) 7.6. Class diagrams 7.7. Activity diagrams 8.0 Object-Oriented Concepts 8.1. Classes 8.1.1. Built-in Classes 8.1.2. User-defined Classes 8.2. Encapsulation and information hiding 8.3. Identity, state and behavior 9.0 Subclasses and Inheritance 2 0 4 0 6 6 6 4 EPC Form 3 – Revised 7/13 9.1. Basic concepts and utility 9.2. Derived classes 9.2.1. Method overriding 9.2.2. Constructors 9.2.3. UML modeling 9.3. Interfaces 9.4. Software installation and setup procedures 10.0 Polymorphism 10.1. Dynamic binding 10.2. Abstract classes 10.3. Type checking and dynamic binding 11.0 Input and Output 11.1. Streams and Files 11.2. Console I/O 11.3. Text file I/O 11.4. Binary file I/O 11.5. Object I/O with object streams 11.6. Introduction to Database I/O 12.0 Exceptions and Exception-handling 12.1. Exception classes 12.2. Predefined exception classes 12.3. Throwing, catching and handling exceptions 12.4. Design considerations for exception handling 13.0 Software Validation 13.1. Designing the Plans 13.1.1. Use case modeling as a test plan 13.2. Black-box and white-box testing techniques 13.3. Unit, integration, validation and system testing 14.0 Professional and Ethical Responsibilities 14.1. Acceptable use policies for computing in the workplace 14.2. Codes of ethics, conduct, and practice (IEEE, ACM, etc) 15.0 Graphical User Interfaces 15.1. Windows 15.2. Frames 15.3. Buttons and ActionListeners 15.4. Labels and TextFields Testing Total Textbooks Title Starting out with Java, From Control Structures through Data Structures References (Optional) EPC Form 3 – Revised 7/13 Author Gaddis Publisher Addison-Wesley 2 2 2 3 4 3 1 0 1 0 1 2 4 45 30 ISBN 0-321-54586-9 EPC Form 3 – Revised 7/13