After completion of this course, students will have met the following student learning outcomes:
- Demonstrate a general understanding of computing technology.
- Design and implement programs in the C++ programming language.
- Ability to use an industry-standard toolchain for writing, compiling, and executing C++ code.
- Demonstrate an understanding of the basic principles of computer programming.
- Demonstrate an understanding of the Structured Programming paradigm.
- Develop algorithms and programs to apply mathematical concepts.
- Apply critical thinking and problem-solving skills to develop solutions to non-trivial programming problems.
- Demonstrate technical communication skills through written algorithms and code documentation.
- Understanding Abstract Data Types: motivations and basic concepts.
- Understanding of the behavior of basic data structures (lists, stacks, queues, trees (binary trees and tree traversals), graphs).
- Ability to analyze a problem and determine the appropriate data structure for the problem.
- Understand the importance of data modeling and data structures in advanced programming.
- Understand and analyze elementary algorithms: sorting and searching.
- Ability to analyze the impact of data structures technique on the performance of algorithms (time and space complexity)/programs.
- Data structure implementation issues. Understanding of dynamic versus array implementations of data structures, factors involved in deciding on an implementation technique.
- Practice in writing modular programs using the data structures that have been studied.
- Understanding the mechanics of code design, organization, and the development environment.
- Understanding data structure implementation in C++ using header files and implementation files.
- Demonstrate adeptness of object oriented programming in developing solutions to problems demonstrating usage of data abstraction, encapsulation, and inheritance
- Be familiar with basic techniques of algorithm analysis
- Be familiar with writing recursive methods
- Be familiar with advanced data structures such as balanced search trees, hash tables, priority queues and the disjoint set union/find data structure
- Be familiar with several advanced sorting algorithms including quicksort, mergesort and heapsort
- Be familiar with some graph algorithms such as shortest path and minimum spanning tree
- Master analyzing problems and writing program solutions to problems using the above techniques
CS 5012/5022/5032 is intended to provide core undergraduate Computer Science competencies linked to the following B.S. degree-level student learning outcomes:
- Graduates of the B.S./B.A. Computer Science degree program attain the ability to apply knowledge of computing and mathematics appropriate to the discipline.
- Graduates of the B.S./B.A. Computer Science degree program attain the ability to analyze a problem, and identify and define the computing requirements appropriate to its solution.
- Graduates of the B.S./B.A. Computer Science degree program attain the ability to design, implement, and evaluate a computer-based system, process, component, or program to meet desired needs.
- Graduates of the B.S./B.A. Computer Science degree program attain an understanding of professional, ethical, legal, security and social issues and responsibilities.
- Graduates of the B.S./B.A. Computer Science degree program attain the ability to analyze the local and global impact of computing on individuals, organizations, and society.
- Graduates of the B.S./B.A. Computer Science degree program attain recognition of the need for and an ability to engage in continuing professional development.
- Graduates of the B.S./B.A. Computer Science degree program attain the ability to use current techniques, skills, and tools necessary for computing practice.