CS Core Requirements Flashcards
CS 180
CS 180: Problem Solving and Object-Oriented Programming (4 credits)
Prerequisite: MA 16100 minimum grade C or 16500 minimum grade C [may be taken concurrently]
First core CS course for CS majors and minors, must be Calc-ready (have Calc I credit already posted or be enrolled in Calc I at the same time). Taught in Java programming (one of the object-oriented languages, makes use of reusable “objects” that exist outside of the program itself and are “called” by the program when needed). CS 180 does not assume prior programming experience, but does move very quickly. Students with Java experience are typically somewhat bored during the first half of the course, but should be encouraged not to get over-confident. Students will learn the syntax of Java programming, but there is also a tremendous focus on the topics and theory of programming in general, to prepare students to be able to learn any programming language. Biggest difference from high school AP courses or the majority of transfer credit is that our course includes topics of concurrency and threading. Background info: multi-core processors (dual-core, quad-core, etc) have been around for a while, but programmers aren’t trained to make the most efficient use of them. So our program is trying to incorporate the ideas of concurrency early on, so that our students are thinking that way through the rest of their college career. Related terms: parallel processing, threading.
Problem solving and algorithms, implementation of algorithms in a high level programming language, conditionals, the iterative approach and debugging, collections of data, searching and sorting, solving problems by decomposition, the object-oriented approach, subclasses of existing classes, handling exceptions that occur when the program is running, graphical user interfaces (GUIs), data stored in files, abstract data types, a glimpse at topics from other CS courses. Intended primarily for students majoring in computer sciences. Credit cannot be obtained for both CS 18000 and any of 15600, 15800 and 15900. Not open to students with credit in CS 24000.
CS 18000 Black assumes students are very familiar with the below topics. The black section will include enriching topics that go beyond the core outcomes of the class, but which are not essential for subsequent courses. • Types and Strings • Selection (is, switch) • Repetition (while, do while, for) • Arrays • Classes, Objects, and Methods CS 18000 Gold assumes students have no programming background or limited experience with: • Types and Strings • Selection (is, switch) • Repetition (while, do while, for) • Arrays • Classes, Objects, and Methods
CS 182
CS 18200: Foundations of CS (3 credits)
Prerequisite: CS 18000 minimum grade C and MA 16100/16500 minimum grade C
Sneaky—it’s a math course, primarily discrete math. Relevant to CS because computers operate in steps, not a continuous variance, think binary: 1s and 0s only, nothing in-between. Includes topics of logic, proofs, graphs, some probability and statistics, but all related to how computers operate. We frequently have transfer students with credit for a math course called Discrete math, we evaluate such courses within the department for equivalency. If a transfer or CODO-in students have established Calc I credit and have some programming background (preferably in Java and/or C), we can allow taking CS 180 and 182 simultaneously (pre-req OR on CS 182). CS 182 should be taken simultaneous with or prior to CS 240. Discrete math. Math concepts specific to CS, foundations of math for CS.
Logic and proofs; sets, functions, relations, sequences and summations; number representations; counting; fundamentals of the analysis of algorithms; graphs and trees; proof techniques; recursion; Boolean logic; finite state machines; pushdown automata; computability and undecidability.
0.000 OR 3.000 Credit hours
CS 240
CS 24000 - Programming In C
Prerequisite: CS 180 (often taken concurrently with CS182)
Credit Hours: 3.00. The UNIX environment, C development cycle, data representation, operators, program structure, recursion, macros, C preprocessor, pointers and addresses, dynamic memory allocation, structures, unions, typedef, bit-fields, pointer/structure applications, UNIX file abstraction, file access, low-level I/O, concurrency.
Learning Outcomes: 1. Understand programming principles and techniques for problem solving in the C programming language.
CS 250
CS 25000 - Computer Architecture
Prerequisites: CS 182 and CS 240
Credit Hours: 4.00. Digital logic: transistors, gates, and combinatorial circuits; clocks; registers and register banks; arithmetic-logic units; data representation: big-endian and little-endian integers; ones and twos complement arithmetic; signed and unsigned values; Von-Neumann architecture and bottleneck; instruction sets; RISC and CISC designs; instruction pipelines and stalls; rearranging code; memory and address spaces; physical and virtual memory; interleaving; page tables; memory caches; bus architecture; polling and interrupts; DMA; device programming; assembly language; optimizations; parallelism; data pipelining.
Learning Outcomes: 1. Students understand the function of basic hardware, including fundamentals of digital logic, processors, memory, and I/O.
CS 251
CS 25100: Data Structures and Algorithms (3 credits)
Prerequisite: CS 18200 minimum grade C and (CS 24000 minimum grade C or CS 24200 minimum grade C)
Before the 2010 CS curriculum restructure, this course was only about data structures (algorithms was a separate course, CS 381. Since CS 381 is no longer required for every student, the faculty wanted students to get a least a bit of algorithms, so they included it here. Often taken simultaneously with CS 250. Either combo is doable, but tough (all three are mostly project-based courses). Data structures – ways of storing data, shows what those different structures are, advantages/disadvantages, write programs. Algorithms – use in data structures.
Running time analysis of algorithms and their implementations, one-dimensional data structures, trees, heaps, additional sorting algorithms, binary search trees, hash tables, graphs, directed graphs, weighted graph algorithms, additional topics.
Learning Outcomes: 1. Understand fundamental data structures, fundamental algorithms, and their implementation.
CS 252
CS 25200 - Systems Programming
Prerequisites: CS 250 and CS 251
Credit Hours: 4.00. Low-level programming; review of addresses, pointers, memory layout, and data representation; text, data, and bss segments; debugging and hex dumps; concurrent execution with threads and processes; address spaces; file names; descriptors and file pointers; inheritance; system calls and library functions; standard I/O and string libraries; simplified socket programming; building tools to help programmers; make and make files; shell scripts and quoting; unix tools including sed, echo, test, and find; scripting languages such as awk; version control; object and executable files (.o and a.out); symbol tables; pointers to functions; hierarchical directories; and DNS hierarchy; programming embedded systems.
Math
Will need to complete MA 161/162 Plane Analytic Geometry And Calculus I/II
or
MA 165/166 Analytic Geometry And Calculus I/II
as prerequisites for
MA 261 Multivariate Calculus
and either
MA 265 Linear Algebra (MA 261 & MA 265 or 351 could be taken simultaneously)
or
MA 351 Elementary Linear Algebra (required for Data Science majors)