Academic Catalog

Computer Science (CSC)

Computer Science

CSC-131  INTRO PROGRAMMING USING PYTHON  (3 Credits)  
An introduction to programming and computer science using the Python programming language. Topics include structured imperative program design, data types, control structures, strings, lists, dictionaries, computational problem solving, program implementation, testing and debugging.
Prerequisite: Take MAT-121 (C or higher) May be taken concurrently.  
CSC-132  INTERMEDIATE PROGRAMMING USING PYTHON  (3 Credits)  
A continuation of CSC-131. Further development of problem solving and programming skills using additional features of the Python programming language. Topics include exception handling, user defined classes, modules, data visualization and GUI and event driving programming. Introduction to software engineering practices for version management, coding conventions and automated testing.
Prerequisite: CSC-131 (C or higher), Take MAT-122 previously or concurrently  
CSC-216  DATABASE MGT SYSTEMS  (3 Credits)  
An introduction to the analysis, design, and implementation of database management systems with an emphasis on the relational model. Topics include data modeling, entity-relationship models, normal forms, query languages, database security and integrity.
Prerequisite: CSC-132 (C or higher)  
CSC-225  PROGRAMMING LANGUAGES  (3 Credits)  
This course examines the fundamental concepts underlying the design, implementation, and use of programming languages. Topics include formal language definition, lexical analysis and parsing, translation and execution models, and the relationship between high-level languages and lower-level representations. Students study multiple programming paradigms, such as imperative, functional, and object-oriented approaches, and analyze how language design choices affect correctness, expressiveness, performance, and usability. The course also explores the historical development and evolution of programming languages. Several representative languages are examined to illustrate core concepts.
Prerequisite: CSC-231 (C or higher)  
CSC-228  SYSTEMS PROGRAMMING  (3 Credits)  
This course studies system-level programming with emphasis on how application programs interact with operating system services and underlying hardware resources. Topics include processes and process control, program execution and termination, files and input/output, inter-process communication, and basic concurrency mechanisms. Students examine the operating system interface as a set of abstractions and contracts and learn to reason about resource management, failure modes, and program behavior at the system boundary. The course emphasizes debugging, program correctness, and understanding the runtime behavior of programs executing in a multi-process environment. Through hands-on programming, students gain experience writing and analyzing programs that rely directly on operating system services.
Prerequisite: EGR-226 (C or higher) Minimum grade C;  
CSC-231  INTRO DATA STRUCTURES USING C++  (3 Credits)  
A study of classical data structures and their implementations using the C++ programming language. Topics include abstract data types, contiguous vs linked structures, containers, dictionaries and trees. Introduction to time complexity analysis using Big O notation. Further development of advanced programming concepts including programmer-defined classes, recursion, indirection, dynamic memory allocation, iterators, polymorphism and templates.
Prerequisite: CSC-132 (C or higher), EGR-112 (C or higher)  
CSC-322  OPERATING SYSTEMS PRINCIPLES  (3 Credits)  
This course examines the fundamental principles underlying the design and implementation of modern operating systems. Topics include processes and threads, concurrency and synchronization, CPU scheduling, deadlock, memory management and virtual memory, file systems, input/output systems, protection and security, and selected topics in distributed and client-server systems. Emphasis is placed on operating systems as layered abstractions that manage hardware resources and provide services to software, as well as on the design tradeoffs and policies that influence system behavior and performance. Programming assignments and case studies may be used to reinforce conceptual understanding.
Prerequisite: EGR-226 (C or higher)  
CSC-327  CLIENT-SIDE WEB DEVELOPMENT  (3 Credits)  
This course studies client-side web development with emphasis on the browser as a programmable execution environment for interactive applications. Topics include structured document representation, visual presentation and layout, and executable client-side behavior. Students examine event-driven programming, asynchronous execution, and programmatic interaction with rendered documents. The course emphasizes the design and implementation of responsive, accessible user interfaces under usability, performance, and standards-based constraints. Through hands-on development, students learn to reason about user interaction, state management, and performance in client-side applications.
Prerequisite: CSC-216 (C or higher)  
CSC-328  SERVER-SIDE WEB DEVELOPMENT AND API DES  (3 Credits)  
This course studies server-side web development with emphasis on the design and implementation of network-accessible application interfaces. Topics include request handling, routing, data validation, persistence, and error handling, as well as protocol-level communication and data representation. Students examine the structure and behavior of application programming interfaces, including interface design principles, status and error semantics, authentication mechanisms, and cross-origin interaction. The course emphasizes clean design, correctness, and reliability in backend services and introduces foundational considerations related to scalability and security. Students design and implement services that integrate with modern client-side applications.
Prerequisite: CSC-327  
CSC-343  DATA STRUCTURES AND ALGORITHMS  (3 Credits)  
A continuation of CSC-231 that includes more advanced data structures and an overview of classical algorithms and their applications. The course emphasizes computational problem solving techniques and includes time and space performance analysis and an introduction to computational complexity. Topics include sorting, searching, hashing, heaps, string proessing, as well as graph, geometric and mathematical algorithms. Algorithms are implemented primarily in C++ and Python.
Prerequisite: CSC-231 (C or higher), MAT-243 (C or higher), MAT-245 (C or higher), MAT-251 (C or higher)  
CSC-350  SOFTWARE ENGINEERING  (3 Credits)  
A study of software engineering concepts, methodologies, and tools. Topics include: system analysis and design, requirements management, system lifecycle management, software project management, waterfall vs agile, software quality assurance, testing, maintenance, continuous integration and delivery, legal and ethical principles as they pertain to software engineering projects.
Prerequisite: CSC-325 (C or higher), CSC-231 (C or higher), EGR-226 (C or higher)  
CSC-354  COMPUTER NETWORKDS  (3 Credits)  
This course examines the principles and architecture of computer networks. Topics include layered network models, data transmission and encoding, error detection and correction, multiplexing, switching, and routing, as well as the design and operation of key Internet protocols. Students study how data is transmitted across local and wide area networks and how network abstractions support reliable, scalable communication between distributed systems. Emphasis is placed on protocol design, performance considerations, and the interaction between networking and operating systems.
Prerequisite: None  
CSC-380  INTERNSHIP  (3 Credits)  
This course provides students with the opportunity for practical work experience in a supervised setting. The experience must include the application of concepts and skills the student has learned in the Computer Science program.
Prerequisite: Junior or Senior status required  
CSC-452  SOFTWARE ENGINEERING CAPSTONE PROJECT  (4 Credits)  
This course is the capstone design experience for computer science majors. Students integrate and apply the knowledge, skills, and experience that they have gained throughout the program to complete a significant computing project. Students consider the legal and ethical principles that pertain to computing systems as well as their impacts on society.
Prerequisite: CSC-350 (C or higher)