# C S-COMPUTER SCIENCE (C S)

**C S 111. Computer Science Principles**

**4 Credits (3+2P)**

This course provides a broad and exciting introduction to the field of computer science and the impact that computation has today on every aspect of life. It focuses on exploring computing as a creative activity and investigates the key foundations of computing: abstraction, data, algorithms, and programming. It looks into how connectivity and the Internet have revolutionized computing and demonstrates the global impact that computing has achieved, and it reveals how a new student in computer science might become part of the computing future. May be repeated up to 4 credits.

**Prerequisite: **MATH 1215 or higher.

##### Learning Outcomes

- Identify and differentiate programming constructs like IF, FOR, and WHILE
- Convert numbers between Hexadecimal, Binary and Decimal
- Write pseudo code to manipulate a robot
- Use an ASCII table to translate HEX strings into characters
- Encrypt and Decrypt simple messages with a Caeser Cypher

**C S 117. Introduction to Computer Animation**

**3 Credits (3)**

Introductory course for learning to program with computer animation as well as learning basic concepts in computer science. Students create interactive animation projects such as computer games and learn to use software packages for creating animations in small virtual worlds using 3D models. Recommended for students considering a minor/major in computer science or simply interested in beginning computer animation or programming.

**C S 151. C++ Programming**

**3 Credits (2+2P)**

Introduction to object-oriented programming in the C++ language. The focus will be on preparing students to use C++ in their own areas. No prior programming experience is required. Taught with C S 451.

**Prerequisite: ** MATH 1215 or higher.

##### Learning Outcomes

- Use various data types and the corresponding operations.
- Write C++ programs that contain expressions, program control, functions, arrays, and input/output
- Explain basic object-oriented programming concepts.
- Demonstrate proficiency in using classes, inheritance, pointers, streams, and recursion

**C S 152. Java Programming**

**3 Credits (2+2P)**

Programming in the Java language. May be repeated up to 3 credits.

**Prerequisite(s): **MATH 1215 or higher.

**C S 153. Python Programming I**

**3 Credits (3)**

This course is an introduction to programming in the Python language, covering fundamental scripts, data types and variables, functions, and simple object creation and usage. The focus will be on preparing students to use Python in their own areas. No prior programming experience is required. Taught with C S 453.

**Prerequisite: ** MATH 1215 or higher.

##### Learning Outcomes

- Develop an algorithm to solve a problem
- Demonstrate the ability to use Python data types: int, float, strings, and lists; and the built-in functions associated with those data types
- Edit and debug programs using the Spyder IDE for Python
- Implement algorithms using the Python features of assignment, input, output, branches, loops, and functions
- Explain the fundamental concepts of object-oriented programming with Python
- Design and implement Python classes based on given attributes and behaviors
- Work with existing Python modules such as math, random, and os
- Write Python programs that input data from files and store results in files

**C S 154. Python Programming II**

**3 Credits (3)**

This course covers advanced Python programming, including classes, objects, and inheritance, embedded programming in domain applications, database interaction, and advanced data and text processing. The focus will be on preparing students to use Python in their own areas.

**C S 158. R Programming I**

**3 Credits (3)**

This course is an introduction to data processing in the R language, covering fundamental script configuration, data types and data collections, R control structures, and basic creation of graphs and data visualizations. This course will not focus on the statistical capabilities of R, though some basic statistical computations will be used.

**Prerequisite(s): **MATH 1220G.

**C S 171G. Modern Computing in Practice**

**4 Credits (3+2P)**

This course provides a survey of practical and theoretical foundations for how computers work and how they support fundamental organizational needs. The course covers broad aspects of the hardware, software, and mathematical basis of computers. Lab assignments provide hands-on applications to use simple basic software tools to write simple programs, build and edit websites, analyze data with spreadsheets, choose an office productivity suite, and demonstrate computer literacy to potential employers. May be repeated up to 4 credits.

**Prerequisite: **MATH 1130G or MATH 1215 or higher.

##### Learning Outcomes

- Students will create simple python programs using conditional statements and loops
- Students will analyze data with spreadsheet formulas, charts, and tools
- Students will create and publish a personal website using website building tools
- Students will edit HTML and CSS to format a website manually
- Students will practice the skill of performing software QA and providing actionable feedback to developers
- Students will become aware of common cybersecurity risks
- Students will learn basic vocabulary and context for broad aspects of hardware, software, and computer science theory such as Security, Privacy, Cloud Computing, the Internet, the Web, Operating Systems, Discrete Math, and Information Systems
- Students will be exposed to various sub-fields of CS including artificial intelligence, security, data analytics, UX, web development, and QA testing
- Students will reason about the societal impacts of technology 1
- Students will incorporate their new knowledge and skills into their resume

**C S 172. Computer Science I**

**4 Credits (3+2P)**

Computational problem solving; problem analysis; implementation of algorithms using Java. Object-oriented concepts, arrays, searching, sorting, and recursion. Taught with C S 460. May be repeated up to 4 credits.

**Prerequisite: **(A C- or better in either MATH 1250G or (MATH 1430G or higher)) OR (A C- or better in MATH 1220G and a 1 or better in the CS Placement Test) OR (A C- or better in MATH 1220G and a C- or better in C S 111).

##### Learning Outcomes

- Develop algorithms to solve problems
- Implement algorithms using the fundamental programming features of sequence, selection, iteration, and recursion
- Apply an understanding of primitive and object data types
- Design and implement classes based on given attributes and behaviors
- Explain the fundamental concepts of object-oriented programming,

**C S 209. Special Topics.**

**1-3 Credits**

May be repeated for a maximum of 12 credits.

**C S 271. Object Oriented Programming**

**4 Credits (3+2P)**

Introduction to problem analysis and problem solving in the object-oriented paradigm. Practical introduction to implementing solutions in the C++ language. Pointers and dynamic memory allocation. Hands-on experience with useful development tools. Taught with C S 462. May be repeated up to 4 credits.

**Prerequisite: **At least a C- in C S 172 or ENGR 140.

##### Learning Outcomes

- Develop an algorithm to solve a problem.
- Implement algorithms using the C and C++ languages including imperative and object-oriented language features.
- Beyond what was learned in C S 172, E E 112, or E E 161 demonstrate a noticeable increase in understanding of problem analysis and program design.
- Demonstrate proficiency in using control structures including if statements (single selection), switch (multiple selection), and loops (repetition).
- Demonstrate proficiency in using arrays and functions
- Create UML class and relationship diagrams.
- Design a class to model a real-world person, place, thing, or event.
- Use editing and debugging software to create, debug, and test C and C++ programs.
- Understand the basic terminology used in object-oriented programming. 1
- Create a make file to build an executable from a set of C or C++ source files.

**C S 272. Introduction to Data Structures**

**4 Credits (3+2P)**

Design, implementation, use of fundamental abstract data types and their algorithms: lists, stacks, queues, deques, trees; imperative and declarative programming. Internal sorting; time and space efficiency of algorithms. Taught with C S 463.

**Prerequisite: ** At least a C- in C S 172, or placement.

##### Learning Outcomes

- Be able to implement and use lists
- Be able to implement and use stacks
- Be able to implement and use queues
- Be able to implement and use trees
- Be able to perform the run time analysis of basic algorithms using Big O notation
- Be able to implement, use, and analyze searching algorithms
- Be able to solve a problem recursively
- Take a problem statement from a user and convert it into a Java program that fulfills the user’s needs
- Create object oriented Java classes that effectively separate and hide implementation details from client applications

**C S 273. Machine Programming and Organization**

**4 Credits (3+2P)**

Computer structure, instruction execution, addressing techniques; programming in machine and assembly languages. Taught with C S 464. May be repeated up to 4 credits.

**Prerequisite: **At least a C- in C S 172 or ENGR 140.

##### Learning Outcomes

- Describe the architecture of a microcontroller, the interconnections between the components, and the basic units inside the CPU
- Use signed and unsigned numbers, the associated branching instructions, and the corresponding flags in the status register
- Explain immediate, direct, indirect addressing modes, their opcode and operands, and their utilities
- Map high-level programming language features to assembly instructions, including loops, conditionals, procedure calls, value and reference parameter passing, return values, and recursion
- Interface with I/O devices including LED and sensors via digital input and output, and analog-to-digital conversion
- Program timers/counters and interrupts to control real-time applications
- Design an assembly program

**C S 278. Discrete Mathematics for Computer Science**

**4 Credits (3+2P)**

Discrete mathematics required for Computer Science, including the basics of logic, number theory, methods of proof, sequences, mathematical induction, set theory, counting, and functions. Taught with C S 465.

**Prerequisite: ** At least C- in C S 172.

##### Learning Outcomes

- Use logic to specify precise meaning of statements, demonstrate the equivalence of statements, and test the validity of arguments
- Construct and recognize valid proofs using different techniques including the principle of mathematical induction
- Use summations, formulas for the sum of arithmetic and geometric sequences
- Explain and apply the concepts of sets and functions
- Apply counting principles to determine the number of various combinatorial configurations