NOTE: Click course name for description.
(3) An introduction to the field of computer science and a survey of computing-related topics intended for computer science majors who are not ready for CSCI 221, and non-majors in related engineering fields and other scientific and technical disciplines. Topics include the history of the discipline, programming in a modern high-level language, lower-level languages, digital logic, computer architecture, operating systems, and software applications.
(3) Computer history, problem solving algorithms, control structures, representation of data. Introductory programming in the C++ language. Intended for computer science majors. Prereq: placement in OR completion of MATH 110 or MATH 140 or above, OR Grade of C or better in CSCI 220.
(3) A programming intensive continuation of CSCI 221 For computer science majors. Non-computer science majors may be admitted with departmental approval. May be used as one of the programming language requirements for a minor in computer science. Prereq: Grade of C or better in CSCI 221. (F, Sp)
(1-3) Lectures and/or special projects related to various specialized topics. Possible topics include programming languages, operating systems, and additional software packages. May be offered on a pass/fail basis. Prereq: Departmental approval required. Repeatability: Course may be repeated for a maximum of six (6) hours credit.
(3) Applications of mathematics fundamental to the science and technology of computer science, providing an appropriate theoretical background for advanced courses. Topics include: propositional logic, predicate logic and quantified statements, proof techniques, sequences, recursion, and set theory. Prereq: CSCI 221 AND completion of MATH 170 or MATH 185 or coreq of MATH 251.
A continuation of CSCI 301. Applications of mathematics fundamental to the science and technology of Computer Science. Topics include functions, relations, counting and combinatorics, probability, graphs, trees, basic algorithm analysis, regular expressions, and finite-state automata. (S) Prereq: CSCI 301 or permission of instructor
(3) Introduction to tools and techniques related to system administration. Command line tools, scripting, network administration, routing, security, user administration, and application support.
(3) Structure of digital computers, introduction to machine language, number representations, symbolic coding and assembler language, register sets, instruction types, addressing modes, input-output subroutines, segmentation, paging and introduction to operating systems. Prereq: CSCI 222. (F)
(3) Detailed study of data structures and their implementations. Strings, lists, queues, stacks, graphs, trees, sparse arrays, and file structures. Algorithms involving iteration, recursion, sorting, searching, hashing and basic complexity analysis. Prereq: CSCI 222.
(3) Advanced programming techniques for mobile platforms such as smart-phones and tablets using an object-oriented language. Topics include: exception handling, graphics objects, graphical user interfaces, touch interfaces, mobile software development kits, sensor input (accelerometer, gyro, GPS, etc.), and multimedia. Prereq: CSCI 325.
(3) Formulation of numerical problems for solution on a digital computer. Error analysis and control, nonlinear equations, differentiation, integration, systems of equations, differential equations, curve fitting and eigenvalue problems. Prereq: CSCI 221 and MATH 252; CSCI 301 or MATH 310. (Same as MATH 340/540.) (as needed)
(3) Techniques, methodologies, and tools related to the planning, development, and maintenance of large software systems in a contemporary development setting. Focus on team-based development practices. Prereq: CSCI 222.
(3) Fundamentals of networking connectivity and communications. Local and wide area network basics, networking architecture, layers, and standards. Network protocols including TCP/IP family of protocols. Socket based, client-server programming techniques and projects. Prereq: CSCI 325.
(3) History, intelligent agents, classical search, game-playing, declarative programming, reasoning under uncertainty, and planning. Programming assignments will incorporate techniques covered in lecture and programming in languages appropriate to A.I. Prereq: CSCI 302 and 325.
(3) Introduction to Fundamentals of Parallelism, Parallel computation models which include parallel algorithms and parallel architectures, performance and scalability of parallel systems, parallel algorithms and programming for well known numerical problems. Prereq: CSCI 222 or 226. (as needed)
(3) Design and implementation of relational database systems. Topics include SQL programming, normalization, security, integrity, and administration. Prereq: CSCI 325.
(3) Design and implementation of interactive client-server web based applications and systems. Topics include client technologies, web server technologies, database storage, communication protocols, design patterns, and security. Prereq: CSCI 325.
(3) A study of the organization of modern computer systems, memory organization and management features, virtual memory systems, interrupt services, hardware and software equivalency, RISC and CISC instruction sets, software/hardware equivalence, multiple architectures, and concurrency in computation. Data Representation, Boolean Algebra and Digital Logic, Instruction Processing, Machine Language and Assembly Language. Prereq: CSCI 325
(3) Introduction to algorithm design principles, techniques for the analysis of algorithms, problem-solving methodologies, and advanced data structures. Topics include searching and sorting, divide and conquer, greedy algorithms, dynamic programming, graph algorithms, asymptotic analysis of algorithms, proofs of correctness, and advanced data structures. Prereq: CSCI 302 and 325.
(3) Topics related to algorithm analysis, complexity, and classical models of computation. Topics include Complexity analysis of algorithms, complexity classes (P, NP, and NP-complete, regular expressions, grammars, finite state machines, and Turing machines. Prereq: CSCI 302 and 325.
(3) Frame buffers, display files, graphics primitives, transformations of two-dimensional spaces, windows, viewports, clipping, covering, transformations of three-dimensional space, parallel and perspective projections, stereoscopic views, hidden line algorithms. Prereq: CSCI 325 AND MATH 310.
(3) Syntax and basic characteristics of grammars, language constructs, storage allocation, binding times, and lexical analysis of programming languages. Families of programming languages studied include imperative (procedural), object oriented, functional, and logical languages. Prereq: CSCI 302, CSCI 325.
Translators (3) Theory of compilable languages, construction of software for compiling, interpreting and translating computer languages. Study of various types of translators, implementation of a translator for a language. Prereq: CSCI 302 and 325.
(3) A study of operating systems, processing of l/O and interrupt service, buffering, spooling and memory management services, security and error protection, systems accounting and resource allocation, multi-programming and multi-processing, inter-process communication, includes the study and use of several operating systems. Prereq: CSCI 325.
(1-3) Lectures and/or special projects related to specialized advanced topics in computer science. Course may be repeated for a maximum of six (6) hours credit. May be offered on a pass/fail basis. (as needed)
Prereq: Departmental approval required.
(3) Selected topics in computer science including trends, ethics, employment, and graduate school opportunities. Small teams will complete senior design projects. Teams will present results at a local conference and summarize work in a technical report. Prereq: CSCI 302 and 325, computer science major, senior standing, and permission of department faculty.
About Computer Science
Learn about the mission and goals of our Computer Science program.