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) An introduction to programming in the C++ language. Types and representations, arithmetic, strings, arrays, control structures, basic algorithm design, and problem solving.
(3) A programming intensive continuation of CSCI 221 and introduction to the object oriented paradigm. Multidimensional arrays, structs, classes, inheritance and polymorphism, pointers and dynamic memory management, recursion, templates, and operator overloading. (F, Sp)
(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 MATH 251 or permission of instructor.
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) 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) 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, standards, and security. Network protocols including TCP/IP family of protocols. Techniques and projects on routing simulations, encryption and digital signatures, and client-server programming.
(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 Distributed Systems. An introduction to the field of distributed systems, and the fundamental problems related to their design and construction. Concurrent programming, thread pools and safety, non-blocking I/O, scalable sever design, file system design, distributed mutual exclusion and deadlock detection, pipelining schems, and MapReduce. Prereq: CSCI 222 or 226. (as needed) Prereq: CSCI 325.
(3) Design and implementation of relational database systems. Topics include relational data models, ERD, normalization, SQL programming, transaction management and concurrency control, and object-oriented DBMS..
(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 hardware and low-level software organization typical of a modern computing platform. Boolean Algebra, digital logic, instruction sets, assembly languages, representations of data, computer arithmetic, memory and processor architectures, pipelining, input-output systems, alternative architectures, and evolution of computing hardware. Prereq: CSCI 301 AND 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) A theoretical treatment of formal languages, classical models of computation, and related issues including complexity and computability. Topics include formal languages and the relationship among classes of languages; models of computation including regular expressions, grammars, finite state machines, and Turing machines; complexity classes (specifically P, NP, and NP-Complete) with connections to classical problems in computing; and the nature of decidable and undecidable problems. 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.
A laboratory-style introduction to hardware and software issues related to the design and application of autonomous mobile robots. The course will cover fundamental concepts in robotics from a computational standpoint. Topics include sensors and actuators, and development of software for control, obstacle avoidance, planning and navigation, interaction with and manipulation of the physical world. Prereq: CSCI 325.
(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.
Supervised work experience in business establishments, institutions, or other organizations matched to the student's curriculum. May be repeated for up to a total of six (6) hours internship credit. A maximum of three (3) hours may be used to fulfill upper-division computer science electives. Prereq: Departmental approval is required; at least Junior standing.
(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.