CSCI 1302 Computer Science II (3-0-3)
The course includes an overview of abstract data types (ADTs); arrays (multi-dimensional) and records; sets and strings; binary files; searching and sorting; introductory algorithmic analysis (including Big-O); recursion; pointers and linked lists; software engineering concepts; dynamic data structures (stacks, queues, trees). A high level programming language will be used.
Prerequisite(s)
MATH 1101 (C) or equivalent placement score, CSCI 1301 (C)
CS Program Outcomes
The CS curriculum is built on six core program outcomes. Successful completion of this course will contribute to the following subset of these six outcomes. Graduates will demonstrate a Developing level of mastery for the following outcomes:
3) Demonstrate sufficient foundational knowledge of computer science: Operating Systems, Databases, Networking, Graphics, Software Engineering, Gaming and Web.
5) Demonstrate mastery of the theoretical underpinnings of computer science.
Graduates will demonstrate a Mature level of mastery for the following outcomes:
1) Solve complex and significant problems with professional skill by formulating efficient and effective algorithmic solutions.
2) Express algorithms clearly and correctly in a variety of programming languages.
Course Learning Objectives
Students are expected to obtain a developing level of mastery in fundamental concepts in computer science. They will show a mature level of understanding in formulating efficient algorithms in a variety of languages. Students will demonstrate understanding through assessments that cover a broad range of concepts and topics. Students should show potential to perform independently and should exhibit a high level of reasoning, critical thinking and problem solving skills. Course objectives are listed for each CS program outcome:
1) Solve complex and significant problems with professional skill by formulating efficient and effective algorithmic solutions.
-Convert real-world problems into computer programs.
-Work with current Integrated Development Environments and Application Programming Interfaces.
-Understand how data abstraction (e.g. classes/objects) and procedural abstraction are used in developing solutions.
-Understand how concepts of inheritance and polymorphism can be used to generate effective and reusable solutions.
2) Express algorithms clearly and correctly in a variety of programming languages.
-Work with Object-Oriented Programming languages.
-Develop an understanding of the role of purely functional and declarative languages.
-Declare classes and instantiate objects.
3) Demonstrate sufficient foundational knowledge of computer science: Operating Systems, Databases, Networking, Graphics, Software Engineering, Gaming and Web.
-Demonstrate understanding of the underlying principles of operating systems, including processes, deadlock, and memory management.
-Demonstrate knowledge of relational databases, including tables, rows, and keys.
-Demonstrate understanding of Graphical User Interfaces.
-Develop computer gaming applications.
5) Demonstrate mastery of the theoretical underpinnings of computer science.
-Understand basic data structures concepts and analysis.
-Differentiate between Deterministic Finite Automata (DFAs) and Non-deterministic Finite Automata (NFAs).
-Explain the importance and underlying principles of Turing Machines
-Demonstrate a basic understanding of some aspects of Artificial Intelligence.
-Be able to explain the difference between NP-Complete and NP-Hard classes of problems.