Computer Science (CPSC)

CPSC 1101 Introduction to Computing    3 Credits

In this course, students learn computational problem-solving techniques through the process of design, implementation, testing, and documentation using the programming language Python. The main ideas of computing are explored and students learn the most essential information about computers and technology in today's digital world and the latest computing trends and skills. Students will get an understanding of the breadth of computing as a discipline and how it exists in the world by identifying computing applications in society and exposing them to a variety of computing topics. Previously CS 0101.

CPSC 1131 Fundamentals of Programming    3 Credits

Attributes: BUEL Business Elective, ENPC Digital Journalism Production Component

This course introduces programming constructs and techniques in a logical progression beginning with small problems and basic algorithms through larger scale programs and design. While not an object oriented course, classes and objects are used in an ancillary capacity while working on broader topics of software architecture. Complete programs will be designed, coded, and debugged in both Java and the C programming language, developing skills necessary to work with more complex software systems. Previously CS 0131.

CPSC 1152 Introduction to Computer Game Modeling    3 Credits

This is an introductory computer games modeling course which examines the basics of computer game design and visual effects. Students will use graphics software modeling packages to create characters and visual effects, and to develop a computer game idea, including storyline and plots. Basic programming techniques may also be taught. Previously CS 0152.

CPSC 1201 Technical Skills for Liberal Arts Majors    3 Credits

Students today will need skills in a variety of computer programs and software applications. This course is designed for those in the liberal arts (humanities and social or behavioral sciences) who will need these technical skills for their future workplace. Specific skill sets include software for word processing, spreadsheet, presentation, conferencing, web page coding, and web page design; other software may be included. The course serves those students going into business, publishing, non-profit careers, and a variety of other enterprises for which the liberal arts training must be augmented with specific cyber-related technical competence. Open to students with majors in the humanities or social/behavioral sciences only. Previously CS 0201.

CPSC 2231 Programming Workshop    3 Credits

Corequisite: CPSC 2231L.

Prerequisite: CPSC 1131.

This course covers advanced programming concepts in one or more current programming languages, including syntax and theories. It prepares students for adapting to various programming environments and coding in an efficient manner. Lab work will accompany the course. Previously CS 0231.

CPSC 2231L Programming Workshop Lab    1 Credit

Corequisite: CPSC 2231.

This lab accompanies the Programming Workshop course for hands-on practice with course concepts. Previously CS 0231L.

CPSC 2232 Data Structures    3 Credits

Corequisite: CPSC 2232L.

Prerequisite: CPSC 2231.

This course presents problem solving with abstract data types such as linked lists, stacks, queues, trees, heaps, and graphs. The course revisits recursion and discusses algorithm efficiency. The course may also include sorting, reachability, and minimal paths in graphs and their algorithms. Students apply data structure concepts in advanced programming. Previously CS 0232.

CPSC 2232L Data Structures Lab    1 Credit

Corequisite: CPSC 2232.

This lab accompanies the Data Structures course for hands-on practice with course concepts. Previously CS 0232L.

CPSC 2250L Computer Science Sophomore Clinic    1 Credit

Corequisite: CPSC 2304.

This sophomore clinic provides faculty guidance and supervision beyond the scope of existing courses. Students learn how to develop and structure their deliverables, as well as how to use computer science tools in the context of real-world or research projects. Previously CS 0250L.

CPSC 2304 Web Development    3 Credits

Attributes: ENPC Digital Journalism Production Component

Prerequisite: CPSC 1131.

This course introduces the student to developing applications for use on the World Wide Web. Students learn basic n-tier concepts for designing distributed applications and gain hands on experience through the construction of web-based applications. The course covers concepts that allow communication over the Web. This includes designing and authoring web pages, markup languages, the client-side document object model, usability, search engine optimization, and client-side dynamic web pages. Graduate equivalent: SWEG 5304. Previously CS 0304.

CPSC 3333 Introduction to Cybersecurity    3 Credits

Prerequisite: CPSC 2231.

In this course, students will be given an extensive overview of the various components of cybersecurity, including software development, operating systems, databases, and networks. Students will learn cybersecurity concepts, issues, and tools that are critical in solving problems in the computing security domain. The course will use lectures, reading assignments, and interactive lab exercises to reinforce the concepts that are introduced. Graduate equivalent: SWEG 5333. Previously CS 0333.

CPSC 3343 Design and Analysis of Algorithms    3 Credits

Prerequisite: CPSC 2232.

This course focuses on algorithmic problem-solving techniques including decrease-and-conquer, divide-and-conquer, transform-and-conquer, dynamic programming, greedy design, backtracking, branch and bound, and heuristic algorithms. Advanced data structure techniques are studied within the context of designing efficient graph algorithms. Students gain an appreciation for the fundamental notion of NP completeness. The asymptotic analysis of algorithmic complexity is emphasized throughout the course. Previously CS 0343.

CPSC 3349 Cloud Computing    3 Credits

Prerequisite: Junior standing.

This course will introduce the foundations of cloud computing, and familiarize students with the core concepts needed to build, deploy and manage applications in a cloud. Besides the theoretical underpinnings, emphasis will be put on practical experience of using cloud resources and services. Concepts like microservices and containers will be discussed in depth, as well as best practices for building successful cloud native applications and implications for development and operational processes. The course will be a combination of lectures and hands-on experience of a public cloud. Graduate equivalent: SWEG 5349.

CPSC 3351L Computer Science Junior Clinic I    1 Credit

Corequisite: SWEG 3301.

This first junior clinic provides faculty guidance and supervision beyond the scope of existing courses. Students learn how to develop and structure their deliverables, as well as how to use computer science tools in the context of real-world or research projects. Previously CS 0350L.

CPSC 3352L Computer Science Junior Clinic II    1 Credit

Corequisite: SWEG 3302.

This second junior clinic provides faculty guidance and supervision beyond the scope of existing courses. Students learn how to develop and structure their deliverables, as well as how to use computer science tools in the context of real-world or research projects. Previously CS 0351L.

CPSC 3354 Theory of Programming Languages    3 Credits

Prerequisite: CPSC 2232.

The objective of this course is to provide a better understanding of programming languages and their design. Various concepts and principles underlying the design and use of modern programming languages are considered, mainly: syntax, semantics, type systems, runtime environment. Students take a pragmatic approach to this course which ties in the theory and real-world implications in some selected programming languages. The course has a substantial theoretical component which is supported by programming assignments and projects. Previously CS 0354.

CPSC 4305 Mobile Application Development    3 Credits

Prerequisite: CPSC 1131.

This project-oriented course examines the fundamental aspects of mobile computing, application architecture, and mobile application design and development. Students will learn application development on the Android platform. Students will complete a hands-on project building a prototype mobile application. Topics include user interface design and building, input and data handling, and network techniques and GPS and motion sensing. Students are expected to work on a project that produces a professional-quality mobile application. Projects will be deployed in real-world applications. Graduate equivalent: SWEG 5305. Previously CS 0305.

CPSC 4314 Network Security    3 Credits

This course is intended for individuals who need an understanding of the client-server environment, with any emphasis on network security. The OSI Model, network concepts, and network architecture are discussed. The components that make up a network, including cabling, wiring hubs, file servers, bridges, switches, routers, network interface cards, network operating systems, and network software and hardware configurations are discussed. Network architectural concepts, wide area networks, remote access, and segmentation are discussed. Operating systems will be discussed and demonstrated. Featured is the seven-layer OSI model, the foundation of today’s communication protocols. Students will work with various security protocols and configure routers and switches with security methods. Previously CS 0314.

CPSC 4315 Computational Biology    3 Credits

Prerequisite: Junior standing.

This course is designed to benefit computational and experimental biologists to understand the principles of analyzing biological data, building models and testing hypotheses using computer science paradigms. Students will learn how to build computational tools that are used to analyze DNA content, identify protein binding patterns, compare sequences, and discover variation within genomes. Graduate equivalent: SWEG 5315. Previously CS 0315.

CPSC 4317 Computational Statistics for Biomedical Sciences    3 Credits

Prerequisite: Junior standing.

This course will provide a practical introduction to analysis of biological and biomedical data. Basic statistical and machine learning techniques will be covered, including descriptive statistics, linear regression, non-linear regression, classification/prediction, and biomedical data visualization. Emphasis will be on how to choose appropriate data analysis models and how to assess statistical significance. This course will benefit data scientists to apply data science techniques to analyze biomedical data or clinical data. In addition, this course is also designed to benefit computational and experimental biologists to understand the principles of analyzing biological data, building models and testing hypotheses using computer science paradigms. To visualize data and carry out data analysis, students will learn R or Python, and other programming languages for statistical computing and graphics. The class will be a combination of lecture and computer lab. Graduate equivalent: SWEG 5317. Previously CS 0317.

CPSC 4322 Visual Analytics    3 Credits

Prerequisite: Junior standing.

In this course, students investigate visual analytics tools and techniques used to synthesize information and derive insight from massive, dynamic, ambiguous, and often conflicting data and to communicate the findings effectively for decision-making. Extensive use of case studies based on real-world events will be used to illustrate course concepts. Students will apply visual analytics techniques toward a focused research problem in a real-world application or a domain of interest. Graduate equivalent: SWEG 5322. Previously CS 0320.

CPSC 4331 Operating Systems    3 Credits

Prerequisite: CPSC 2232.

This course introduces students to the basic operating system structure, process and thread synchronization and concurrency, file systems and storage servers, memory management techniques, process scheduling and resource management, virtualization, and more on a UNIX-like platform. Previously CS 0331.

CPSC 4335 Digital Forensics    3 Credits

Prerequisite: Junior standing.

In this course students will be given the basic notions and theory of digital forensics. For file systems and operating systems, the class covers investigative techniques and legal and technical considerations that the examiner should make. They will learn concepts, challenges, and tools in applying digital forensics examinations. The course includes, but not limited to, topics in the suggested curriculum of CDFE certification. The course will use lectures, reading assignments, and interactive lab exercises to reinforce the concepts that are introduced. Graduate equivalent: SWEG 5335.

CPSC 4355 Artificial Intelligence    3 Credits

Prerequisite: CPSC 2232.

This course provides an overview of methods, history, and typical applications of AI. It covers problem solving, machine learning, probabilistic reasoning, classical search algorithms, deep learning, applications (natural language processing, vision). Students solve a variety of AI problems using Python. Students are able to understand the nature of the intelligence behaviors, develop an AI system, grasp the classical approaches to AI research, and apply these approaches and tools for real problem solving. Graduate equivalent: SWEG 5355. Previously CS 0355.

CPSC 4357 Database Management Systems    3 Credits

Prerequisite: CPSC 2232.

This course examines data management systems; relational database model; domains and relational integrity; structured query language (SQL); database design, logical and physical; entity-relationship diagrams; normalization; transaction processing; and database administration. Students perform a number of hands-on exercises using an industry-standard database for modern applications. Graduate equivalent: SWEG 5357. Previously CS 0357.

CPSC 4360 Machine Learning    3 Credits

Prerequisite: Junior standing.

This course will provide a practical introduction to machine learning applications such as face recognition, clinical diagnosis, speech recognition, natural language processing, or image classification. Topics such as regression, classification, neural networks, deep learning, and ensemble methods will be discussed. Emphasis will be on how to choose appropriate machine learning and deep learning models and how to evaluate their performance. The class will be a combination of lecture and computer lab. Graduate equivalent: SWEG 5360.

CPSC 4521 Information Visualization    3 Credits

Prerequisite: Junior standing.

This course introduces basic elements of Information Visualization, which is concerned with the creation of visual representations of Big Data abstract phenomena for which there may not be a natural physical reality, such as stock market movements, social relationships, gene expression levels, manufacturing production monitoring, survey data from political polls, or supermarket purchases. Students will be exposed to techniques covering the five main phases of developing information visualization tools: representation, presentation, interaction, perception and interpretation, and evaluation. Students will be required to develop a large project related to information visualization. Graduate equivalent: SWEG 5521.

CPSC 4525 Human Computer Interaction    3 Credits

Prerequisite: Junior standing.

This course introduces students to the foundations of Human Computer Interaction and how it applies in software engineering and research settings. Students will learn how to design user interfaces based on the capabilities of computer technology and the needs of human factors. They will design user interfaces and learn how to implement a prototype from a list of informal requirements. It will also introduce students to issues related to human subject research as well as ethical implications of human computer interaction. Graduate equivalent: SWEG 5525.

CPSC 5101 Introduction to Computing.    3 Credits

In this course, students learn computational problem-solving techniques through the process of design, implementation, testing, and documentation using the programming language Python. The main ideas of computing are explored and students learn the most essential information about computers and technology in today's digital world and the latest computing trends and skills. Students will get an understanding of the breadth of computing as a discipline and how it exists in the world by identifying computing applications in society and exposing them to a variety of computing topics.