Computer Science (CSC)
An introduction to the field of computer science and software engineering. Topics include problem solving, algorithms, structured program design, data types, program control structures, program testing, and debugging. Programming assignments are written in a high-level general-purpose programming language. Satisfies the core requirement for a science elective.
A continuation of Programming Fundamentals. Further development of problem solving and programming skills. Topics include object oriented programming, elementary data structures, indirection, dynamic memory allocation, inheritance, polymorphism, and templates. Introduction to software engineering practices for version control, coding conventions, and automated testing. Programming assignments are written in high-level programming languages.
An introduction to fundamental operating systems design, implementation, and usage. Includes O/S topics related to main memory management, virtual memory, I/O and device drivers, file systems, secondary storage management, process management, and critical sections and deadlocks. Also includes knowledge of, differences between, and experience utilizing various O/S environments and utilities including Windows, Mac, Linux, etc.
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.
A study of programming language concepts. Topics include language definition, lexical analysis, parsing, translation of high level languages to assembly language, optimization, alternative programming paradigms, and the history and evolution of programming languages. Several languages are introduced and examined.
An introduction to the analysis and design of digital systems. Topics include boolean algebra, combinational and sequential logic circuits, models of hardware and software at various levels of abstraction, computer organization and architecture, machine language, and microcontroller architecture, programming, and interfaces. Prerequisite: "C" or higher in CSC-132 Co-Listed as EGR-226
Students will explore fundamental algorithms and data structures in computer science and learn to implement them using object-oriented programming languages. Linked lists, stacks, queues, trees, heaps, and hash tables are examples of available data structures that will be reviewed. Real-world problems will be used as means for implementing data structures and algorithms for efficient and elegant approaches for solving problems. Revisioning software will be used to track changes as an introduction to DevOps skills.
An introduction to the principles of operating system design and implementation. Topics include processes, threads, and parallelism, inter-process communication and synchronization, deadlock, memory management and shared memory, processor scheduling, file systems, input/output devices, client-server systems, distributed systems, protection and security.
An introduction to full-stack development of dynamic web applications. Topics include both front-end and back-end programing and development technologies.
Learn technology related to design, development, and deployment of mobile applications. Topics include device-specific capabilities and emulator environments, industry standards, operating systems, and an integrated mobile application development environment.
Solve business problems through analysis of information systems requirements. Learn the concepts, skills, methodologies, techniques, tools, and perspectives essential for systems analysts. Both structured and object-oriented approaches are utilized, requiring students to walk through the steps of system analysis and design to propose architecture (data, programs, environment) for a real-life business problem. Ethical implications of systems analysis and design are incorporated.
This course explores hardware architecture, including CPU, memory, registers, arithmetic/control unit and input/output components. Topics include different types of computer architectures and their functions, as well as low-level machine language used with these components. This course provides an overview of techniques offered by modern processors with an understanding of their relative benefits.
A study of the principles and techniques for designing and analyzing algorithms. Topics include divide-and-conquer, recursion and dynamic programming, greedy methods, graph algorithms, analysis of time and space requirements, and computational complexity.
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.
This course introduces basic communication technologies along with their capabilities and limitations. Client/server network setup and administration are the main focus, including security issues, business continuity, and the role of infrastructure in regulatory compliance.
This course is aimed at practical work experience in a supervised setting. Students must fulfill project-based requirements involving application of Computer Science theory and practice.
An introduction to the concepts of data communication and networks. Topics include physical media, modulation, multiplexing, error detection and correction, the layered network architecture of the Internet, the services and protocols at each level, addressing, reliable data transfer, routing, naming, and network security.
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.