Computer Science (CSC)

CSC 106. Introduction to Programming for Engineers.3 Credits.

This course serves as an introduction to computer science and computer programming for engineers. Topics include fundamental programming constructs, problem-solving techniques, basic data and control structures, and simple data structures and arrays. This course is for non-CSC and non-SER majors.

Offered: Every year, Fall and Spring

CSC 107. Structured Programming Techniques.1 Credit.

The main purpose of this course is to fill any gaps between Programming and Problem Solving course (CSC 110) and the Introduction to Programming for Engineers course (CSC 106). Topics include a basic programming refresher (in Java), binary number representation, debugging strategies and simple recursion.

Prerequisites: Take CSC 106; Minimum grade C-.
Offered: As needed

CSC 109. Special Topics.3 Credits.

Offered: As needed, All

CSC 110. Programming and Problem Solving.3 Credits.

This course serves as an introduction to computer science and computer programming. Topics include fundamental programming constructs; problem-solving techniques; basic data and control structures; testing; debugging; arrays; and an introduction to object-oriented programming. A lab is included.

Corequisites: Take CSC 110L.
Offered: Every year, Fall and Spring

CSC 110L. Programming and Problem Solving Lab.1 Credit.

Students gain experience in the practice of programming and problem solving by completing a series of hands-on activities, which increase in complexity, covering a range of topics from the CSC 110 course. This course is taken in conjunction with CSC 110.

Corequisites: Take CSC 110.
Offered: Every year, Fall and Spring

CSC 111. Data Structures and Abstraction.3 Credits.

This course is a continuation of CSC 110. Topics include advanced data structures (linked lists, stacks, queues, trees, hash tables), recursion, abstract data types, introductory algorithms, and intermediate object-oriented programming. A lab is included.

Prerequisites: Take CSC 110 and CSC 110L; or CSC 107 with program director approval; Minimum grade C-.
Corequisites: Take CSC 111L.
Offered: Every year, All

CSC 111L. Data Structures and Abstraction Lab.1 Credit.

Students gain experience in data structures programming by completing a series of activities, which increase in complexity, covering a range of topics from the CSC 111 course. This course is taken in conjunction with CSC 111.

Prerequisites: Take CSC 110 and CSC 110L; or CSC 107 with program director approval; Minimum grade C-.
Corequisites: Take CSC 111.
Offered: Every year, All

CSC 199. Independent Study.1-6 Credits.

Offered: As needed

CSC 205. Introduction to Discrete Mathematics (MA 205).3 Credits.

This course introduces students to basic concepts and structures of discrete mathematics. Topics can include propositional and predicate logic, sets and set operations, functions, proof techniques, counting problems, probability and basic number theory. Applications include computer science, biology, social sciences, law and the physical sciences.

Prerequisites: Take CSC 110 CSC 110L or MA 110 or higher; Minimum grade C-.
Offered: Every year, Spring

CSC 210. Computer Architecture and Organization.3 Credits.

Students are introduced to the organization and architecture of computers. Topics related to computer organization include digital logic, data representation, computer arithmetic, data path and control unit implementation, memory system organization and I/O communications. Architecture topics include machine language programming, instruction set design, and factors affecting processor performance. A lab component is included.

Prerequisites: Take CSC 111 CSC 111L; Minimum grade C-.
Corequisites: Take CSC 210L.
Offered: Every year, Spring

CSC 210L. Computer Architecture and Organization Lab.1 Credit.

Students design and implement digital circuits of increasing complexity using abstraction to manage complexity. Students implement Assembly Language programs that demonstrate the instruction set architecture interface between hardware and software. This course is taken in conjunction with CSC 210.

Corequisites: Take CSC 210.
Offered: Every year, Spring

CSC 215. Algorithm Design and Analysis.3 Credits.

This course presents a study of the design and analysis of algorithms. Topics include asymptotic analysis, complexity theory, sorting and searching, underlying data structures, recursion, greedy algorithms, divide and conquer, dynamic programming, and NP-completeness. Additional topics may include graph algorithms, probabilistic algorithms, distributed computing and parallel algorithms.

Prerequisites: Take CSC 111 CSC 111L; and CSC 205 or MA 205; Minimum grade C-.
Offered: Every year, Fall

CSC 225. Introduction to Software Development.3 Credits.

This course presents introductory software development concepts including group development, large-scale project work and theoretical aspects of object-oriented programming. The course expands on material from previous courses. Professional behavior and ethics represent an important component of this course.

Prerequisites: Take CSC 111 CSC 111L; Minimum grade C-.
Offered: Every year, Fall

CSC 240. Introduction to Computer Security.3 Credits.

This course introduces the general principles of computer security from an applied perspective. Topics covered include various forms of physical and cyber attacks, recognizing and defending against machine and network vulnerabilities, the basic building blocks of secure systems, basic cryptography and the social aspects of security.

Prerequisites: Take CSC 111 CSC 111L; Minimum grade C-.
Offered: As needed

CSC 299. Independent Study.1-6 Credits.

Offered: As needed

CSC 300. Special Topics.3 Credits.

Prerequisites: Take CSC 215.
Offered: As needed, All

CSC 310. Operating Systems and Systems Programming.3 Credits.

Students are introduced to operating systems and the software to support these systems. Topics include operating system principles, concurrency, scheduling and dispatch, virtual memory, device management, security and protection, file systems and naming, and real-time systems.

Prerequisites: Take CSC 210 CSC 225; Minimum grade C-.
Offered: Every year, Fall

CSC 315. Theory of Computation (MA 315).3 Credits.

This course provides an introduction to the classical theory of computer science. The aim is to develop a mathematical understanding of the nature of computing by trying to answer one overarching question: "What are the fundamental capabilities and limitations of computers?" Specific topics include finite automata and formal languages (defining a model of computation), computability (determining what can be computed and how to prove that something cannot be computed), and complexity (determining what makes some problems so much harder than others to solve, and examining what is the P versus NP question and why it is it important).

Prerequisites: Take CSC 215 or MA 301; Minimum grade C-.
Offered: Every other year, Fall

CSC 318. Cryptography (MA 318).3 Credits.

Students study methods of transmitting information securely in the face of a malicious adversary deliberately trying to read or alter it. Participants also discuss various possible attacks on these communications. Students learn about classical private-key systems, the Data Encryption Standard (DES), the RSA public-key algorithm, discrete logarithms, hash functions and digital signatures. Additional topics may include the Advanced Encryption Standard (AES), digital cash, games, zero-knowledge techniques and information theory, as well as topics chosen by the students together with the instructor for presentations.

Prerequisites: Take MA 229 or CSC 215; Minimum grade C-.
Offered: Every other year, Spring

CSC 320. Compilers.3 Credits.

This course presents a study of the design and implementation of compilers. Topics include translators and compilers, lexical analysis, syntax analysis and parsing, runtime environments and code generation.

Prerequisites: Take CSC 210, CSC 215, CSC 225; Minimum grade C-.
Offered: Every other year, Spring

CSC 325. Database Systems (SER 325).3 Credits.

Students are introduced to the theory and application of database systems. Topics include data modeling and the relational model, query languages, relational database design, transaction processing, databases and physical database design.

Prerequisites: Take CSC 215 and; CSC 225 or SER 225; Minimum grade C-.
Offered: Every other year, Fall

CSC 340. Networking and Distributed Processing.3 Credits.

This course introduces students to net-centric computing, the web as an example of client-server computing, building internet and web applications, communications and networking, distributed object systems, collaboration technology and groupware, distributed operating systems and distributed systems.

Prerequisites: Take CSC 215 CSC 225; Minimum grade C-.
Offered: Every other year, Spring

CSC 350. Intelligent Systems.3 Credits.

Artificial Intelligence is an umbrella topic covering efforts in a variety of fields all searching for one goal: to get computers to perform well at tasks at which humans excel. Topics include fundamental issues in intelligent systems, search and optimization methods, knowledge representation and reasoning, learning, agents, computer vision, natural language processing, pattern recognition, advanced machine learning, robotics, knowledge-based systems, neural networks and genetic algorithms.

Prerequisites: Take CSC 215, CSC 225; Minimum grade C-.
Offered: Every other year, Spring

CSC 375. Advanced Topics in Computer Science (SER 300).3 Credits.

This course explores advanced computer science topics not available in other courses, as well as new topics as they emerge in this rapidly evolving discipline. Topics may be interdisciplinary.

Prerequisites: Take CSC 215 CSC 225; Minimum grade C-.
Offered: Every year, Spring

CSC 399. Independent Study.1-6 Credits.

CSC 490. Computer Science Internship.1-6 Credits.

Offered: As needed

CSC 491. Senior Project I.3 Credits.

Senior Project I is the first part of a two-semester, capstone experience for computer science students. Students analyze and develop a solution to a major project that requires integration and application of knowledge and skills acquired in earlier coursework. Students develop professional experience by working on a team and communicating progress and results to a variety of audiences. Students explore the ethical and legal responsibilities of a computing professional.

Prerequisites: Take CSC 215 CSC 225; Minimum grade C-.
Offered: Every year, Fall

CSC 492. Senior Project II.3 Credits.

Senior Project II is the second part of a two-semester, capstone experience for computer science students. Students implement and evaluate a solution to a major project that requires integration and application of knowledge and skills acquired in earlier coursework. Students continue to develop professional skills in teamwork and communications, and knowledge of their responsibilities as computing professionals.

Prerequisites: Take CSC 491; Minimum grade C-.
Offered: Every year, Spring

CSC 493. Senior Thesis I.1 Credit.

This course is the first part of a two-semester series in which students work independently under the guidance of a faculty member on the development of a senior thesis. The CSC 493/CSC 494 course sequence provides students with an opportunity to synthesize their knowledge of computer science. Students explore the profession of computing by engaging in the professional literature and exploration of professional ethics. Students meet regularly to present and discuss progress. During the first course in the sequence, students develop a proposal for their thesis, including a literature review, and submit to their adviser for approval.

Prerequisites: Senior status in the major.
Offered: Every year, Fall

CSC 494. Senior Thesis II.3 Credits.

This course is the second part of a two-semester series in which students work independently under the guidance of a faculty member on a significant thesis culminating in the development of a senior thesis. The CSC 493/CSC 494 course sequence provides students with an opportunity to synthesize their knowledge of computer science. Students explore the profession of computing by engaging in the professional literature and exploration of professional ethics. Students meet regularly to present and discuss progress. During the second part in the sequence, students complete the thesis proposed in CSC 493.

Prerequisites: Take CSC 493; Minimum grade C-.
Offered: Every year, Spring