Only those courses required for the major are listed below.
| Course |
Description |
| CSC 171 Introduction to Algorithms and Program Development |
This course deals with the general topic of problem solving, algorithm development, and program development. Using the C++ programming language, students will develop small imperative algorithms/programs to reinforce their understanding of the following concepts: scalar data types; control structures; subroutines; objects and classes; file input/output; arrays; strings; vectors; pointers; program design strategies; and testing techniques. (Offered each fall.) |
| CSC 172 Introduction to Algorithm Analysis and Data Structures |
This course continues the study of algorithm and program development introduced in CSC 171. Concepts and implementations of object-oriented programming, and linear (e.g., list, stack, queue) and nonlinear (e.g., tree, set, map) data structures are studied using C++ and Java programming languages. Analysis of algorithms is introduced using various sort algorithms and recursion is studied through algorithm analysis and implementation. Students will develop small and medium-sized algorithms/programs to further their understanding of imperative and object-oriented programming. Prerequisite: CSC-171 or CSC-252/MIS-385 or CSC-253/MIS-325. (Offered each spring.) |
| CSC 271 Structured Software Design |
After a brief review of concepts covered in CSC 171 and CSC 172, this course presents structured software design topics. Design strategies (e.g., refinement) and concepts (e.g., information hiding) are discussed in the context of a software design model that contains four elements - data, component, interface, and architecture. Different structured software design techniques (e.g., data flow diagram), software design metrics (e.g., cohesion), and software quality assurance techniques (e.g., inspection) are discussed and applied to software designs. Each student will produce small and medium-sized design models and will work in a small team to produce one medium-sized design model and a prototype implementation. Prerequisite: CSC-172. (Offered each fall.) |
| CSC 272 Object-oriented Software Design |
This course deals with the general topic of object-oriented software design. Design strategies (e.g., compositional) and concepts (e.g., functional independence) are discussed in the context of a software design model that contains four elements - data, component, interface, and architecture. Different object-oriented software design techniques (e.g., UML), software design metrics (e.g., coupling), and software quality assurance techniques (e.g., review) are discussed and applied to software designs. Each student will produce small and medium-sized design models and will work in a small team to produce one medium-sized design model and a prototype implementation. Prerequisite: CSC-172. (Offered each spring.) |
| CSC 345 Hardware Computing Environments |
This course covers hardware architecture and low-level programming topics. Topics are presented in timeline sequence, with emphasis placed on understanding the performance improvements seen in each generation of hardware innovation. A significant portion of this course is a semester-long project where the student designs and constructs a software simulation of selected hardware components. Students will produce medium-sized design models and will fully implement at least one medium-sized design model. Prerequisites: CSC-271 and CSC-272. (Offered every other fall semester.) |
| CSC 346 Software Operating Environments |
This course covers operating system principles and design, and focuses on process management, memory management, and device and file management. Performance considerations, including both resource usage and speed, are emphasized. A significant portion of this course is a semester-long project where the student designs and constructs components of a virtual machine to reinforce the core operating system concepts. Students will produce medium-sized design models and will fully implement at least one medium-sized design model. Prerequisite: CSC-345. (Offered every other spring.) |
| CSC 395 Start Research Project |
This course, exclusively for junior computer science majors, involves starting a research project in a computer science topic of interest to the student. Prior to registration for the course, a student must submit a proposal and have it approved by a computer science faculty member. During this course, the student focuses on researching the topic, producing an outline, and optionally designing a prototype that, when implemented, illustrates an application of the topic. (Offered each spring.) |
| CSC 396 Start Capstone Project |
This course, exclusively for junior computer science majors, involves starting a software development project in an application domain of interest to the student. The student should strongly consider topics within their minor field of study. Prior to registration for the course, a student must submit a proposal and have it approved by a computer science faculty member. During this course, the student focuses on producing artifacts related to the analysis and design of their chosen application domain. (Offered each spring.) |
| CSC 445 & 446 TBD |
These courses will integrate topics from the following subject areas: graphics and visual computing, human-computer interaction, information management, intelligent systems, net-centric computing, and programming languages. When these courses are designed, every effort will be made to cover as many core topics as possible while maintaining a pedagogical flow within the course. Prerequisites: CSC 271 and CSC 272. (445: Offered every other fall. 446: Offered every other spring.) |
| CSC 475 Technology Transitions |
This course, exclusively for senior computer science majors, involves the study of computer science topics and technologies not covered within the curriculum but relevant to their immediate plans after graduation. Topics and technologies will be chosen for study based on trends observed within graduate schools and job markets. (Offered each spring.) |
| CSC 495 Senior Research Project |
This course, exclusively for senior computer science majors, involves the completion and presentation of a research project in a computer science topic of interest to the student. This course continues the students' research work started in CSC 395. A paper, presentation materials, and optionally a prototype implementation result from the successful completion of this course. (Offered each fall.) |
| CSC 496 Senior Capstone Project |
This course, exclusively for senior computer science majors, involves the completion and presentation of a software development project in an application domain of interest to the student. This course continues the students' work started in CSC 396. Analysis and design artifacts, presentation materials, and a prototype implementation result from the successful completion of this course. (Offered each fall.) |