Computer Science

Computer Science - Undergraduate Courses 

CS 107 Computers and their Applications (back to previous page)
Concepts underlying modern application of computer systems. Windows, word processing, spreadsheets, databases. Not to be taken for credit by computer science majors. 3 credit hours.

CS 110 Introduction to C Programming (back to previous page)
Prerequisite or corequisite: M 115. A first course in computer programming using the C language; for engineering, computer science, mathematics, and science students. Problem-solving methods, algorithm development, and good programming style. Expressions, functions, libraries, basic types and arrays. Programming assignments will stress numeric applications. Lecture plus lab (4 contact hours); 3 credit hours.

CS 166 Discrete Mathematics for Computing (back to previous page)
Prerequisite: CS 110. A foundation course for computer science majors. Introduction to fundamentals including logic, sequences, sets, functions, recursion, induction, proof methods, counting techniques, and Big-O notation. 3 credit hours.

CS 210 Java Programming (back to previous page)
Prerequisite: CS 110. Introduction to the Java programming language. Strings, arrays, and vectors. Object-oriented programming concepts including encapsulation, inheritance, and polymorphism. Applets, and event-driven programming. 3 credit hours.

CS 212 Intermediate C Programming (back to previous page)
Prerequisites: CS 110, CS 210, or permission of academic adviser and instructor. Further topics in the C programming language. Problem-solving methods, algorithm development, and good programming style. Pointers, strings, structured data, two-dimensional arrays, files, recursion, dynamic memory allocation, parameter-passing mechanisms, and the use of pointers to process arrays and lists. Basic algorithms for searching, sorting, and simple numerical analysis. Programming assignments will include both numeric and non-numeric applications. 3 credit hours.

CS 214 Computer Organization (back to previous page)
Prerequisite: CS 166 or consent of instructor. Fundamentals of computer technology, binary number systems, data-type standards and data-type storage requirements, Turing machines, binary logic, and simple gate circuits. The five functional units of input, output, ALU, control unit, and memory are covered and integrated into a virtual, generic computing machine. Progression from Boolean fundamentals through binary logic to micro-code creation. Hands-on experience assembling and implementing low-level programming of a typical computing system. 3 credit hours.

CS 215 Introduction to Databases (back to previous page)
Prerequisite: CS 110. Emphasis on comprehending database concepts and developing a practical level of skill in a current database software package. An introduction to data modeling and normal forms, Standard Query Language (SQL), Query By Example (QBE), security, and report generation. Students develop and implement a modest database project. 3 credit hours.

CS 226 Data Structures Using Collections (back to previous page)
Prerequisite: CS 210. Intermediate program design and debugging in Java. The nature and application of data structures such as arrays, stacks, queues, priority queues, and trees. Evaluation of the performance of different data structures for typical applications. Students will write and debug several projects using Javas built-in class library; classes covered include sets, maps, hash tables, trees, array-based lists, linked lists, stacks, and vectors. 3 credit hours.

CS 247 Network Essentials and Technologies (back to previous page)
Prerequisites: Sophomore standing. Corequisite: CS 214. A foundation in current network technologies for local area networks (LANs), wide area networks (WANs), and the Internet. Introduction to the hardware, software, terminology, components, design, and connections of a network. The OSI model will be covered as well as differing topologies and protocols for LANs. The course will include both lectures and hands-on labs. 3 credit hours.

CS 320 Operating Systems (back to previous page)
Prerequisite: CS 214 or EE 371. Corequisite EE 472 . Modern operating system concepts including interrupts, process and thread management, concurrency, deadlock, memory management, file system management, resource allocation. 3 credit hours.

CS 326 Data Structures and Algorithms (back to previous page)
Prerequisites: CS 166, CS 212, CS 226. Data structures: trees, graphs, and hash tables. Recursive techniques: divide and conquer, backtracking, and recursion elimination. Algorithms: sorting, searching, and shortest paths. Analysis of the complexity of algorithms. Programming will be required. 3 credit hours.

CS 350 Human-Computer Interaction/Visual Programming (back to previous page)
Prerequisites: CS 210 or programming experience in C, VB, VB.Net, or Java. The study of psychological and physiological factors on the design of the Human-Computer Interface (HCI). The influence of various input and output devices on the efficacy of the interaction. Evaluation of the interaction as a function of the interface design. Evaluation issues include qualities such as learnability, usability, human efficiency, and accuracy.  Students will design, implement, analyze, and evaluate graphical user interfaces (GUIs). 3 credit hours.

CS 416 Social and Professional Issues in Computing (back to previous page)
Prerequisite: Junior or senior standing. A broad-ranging look at the capabilities and limitations of computers and the effects of rapid change. Roles and responsibilities of the computer professional in our world; codes of ethics. Complex systems, risks, and system failure: intellectual property. Social effects of networks and global communication, outsourcing, privacy, databases, data mining, cryptography, and snooping. Computer crime, break-ins, terrorism, and countermeasures. 3 credit hours.

CS 425 Principles of Computer Graphics (back to previous page)
Prerequisites: M 118, CS 212, CS 226. Development and implementation of the fundamental algorithms of computer graphics: 2-D viewing, geometric transformations, clipping, curves, user interaction. Introduction to 3-D viewing and surfaces. Programming projects required. 3 credit hours.

CS 428 Object-Oriented Design (back to previous page)
Prerequisites: CS 210, CS 226. An object-oriented design methodology course. Topics include requirements capture, object-oriented system analysis, design and implementation. Primary emphasis on the UML methodology, separation of layers, design patterns, and the importance of these in developing a software project. Students will design a major group project and implement portions using C++ or Java. 3 credit hours.

CS 434 Assembly Language (back to previous page)
Prerequisites: CS 210, CS 214 or EE 371. Introduction to assembly language programming, including the hardware instruction set, assembly language syntax and features, macros, subprograms, interrupts, I/O conversions. Programming required. 3 credit hours.

CS 440 Programming Laboratory (back to previous page)
Prerequisites: Junior or senior standing in computer science, consent of faculty supervisor, and approval of program coordinator. The student will write a large program or a series of programs. Projects will be an extension of the course materials of one of the junior/senior courses. Course may be taken repeatedly, up to three times, working in different languages or doing more advanced projects. 1 credit hour.

CS 441 Web-Database Application Development (back to previous page)
Prerequisites:  CS 215, CS 210 or programming experience in VB.Net or Java. Fundamental principles and techniques for creating network applications. Topics include establishing network connections, database connectivity, Java Server Pages (JSP) and Active Server Pages (ASP), XML, network security issues and internationalization. 3 credit hours.

CS 445 Network Administration (back to previous page)
Prerequisite: CS 320. Fundamentals of administration of a networked computer. Topics include basic duties of a system administrator; overview of TCP/IP networking; file system layouts; user management; network services such as DNS, NIS, DHCP, file sharing, printing, mail, ftp, web, and interfacing different operating systems on one network; and general security issues including firewalls and secure shells. Lab exercises will use both UNIX and Windows systems. 3 credit hours.

CS 446 Introduction to Computer Security (back to previous page)
Prerequisite: CS 320 or permission of the instructor. Knowledge of networks desirable. A survey of computer and network security issues including types of network attacks, viruses, intrusion detection and tracking, firewalls, trust relationships, and authentication, secure connections cryptography, and recent security policy and legislation. 3 credit hours.

CS 447 Computer Communications (back to previous page)
Prerequisites: CS 214 or EE 472 and any one of the following: EAS 345, IE 346 or M 371 or EE 320. Problems and solutions in network design. Layered models, network topology, protocols, virtual circuits and packet switching, local networks (CSMA, token ring, ethernet), security (DES, public key cryptosystems), Internet protocols, client/server programming, sockets. 3 credit hours.

CS 450-469 Special Topics (back to previous page)
Prerequisite: Junior or senior standing in computer science. New developments or current practices in computer science. 3 credit hours.

CS 472 Script Programming for Network Administration (back to previous page)
Prerequisite: CS 320. Concepts and details of writing small programs, called scripts, for the Unix and Windows-server operating systems. Security issues in shell scripts, batch file programming, Perl scripts, and Python scripts.  Students will write scripts to administer both computers and networks. 3 credit hours.

CS 478 Artificial Intelligence (back to previous page)
Prerequisite: CS 226. An introduction to the fundamental methods of artificial intelligence (AI) used in problem solving by a computer. Techniques include heuristic search, optimization, genetic algorithms, game playing, expert systems, probabilistic reasoning, learning strategies, neural networks, natural language understanding, image understanding. Includes the design and implementation of AI programs. 3 credit hours.

CS 504 Senior Project (back to previous page)
Prerequisites: Senior standing in computer science, consent of faculty supervisor and approval of program coordinator. A project is selected and carried out in conjunction with the faculty adviser. Work is presented at a seminar at the end of the term. 3 credit hours.

CS 524 Advanced Databases (back to previous page)
Prerequisites: CS 215, CS 226, CS 320. A second course in database systems covering advanced topics and new developments in the database field. Topics include: database design methodologies and evaluation, embedded SQL, concurrency control, recovery schemes, security, query processing and optimization, and an introduction to object-oriented databases. 3 credit hours.

CS 526 Object-Oriented Principles and Practice/C++ (back to previous page)
Prerequisites: CS 212, CS 226. The C++ language; object-oriented design and programming. Protection of privacy, encapsulation of data with relevant functions. Advanced aspects of C++; inheritance, templates, polymorphism, virtual functions, and exception handling. Several programming projects in C++. 3 credit hours.

CS 534 Cryptography and Data Security (back to previous page)
Prerequisites: CS 166, CS 210, CS 320. A survey of cryptographic concepts and algorithms and their application to data security. Techniques studied will include private key cryptosystems, public key cryptosystems, and hash functions. Commonly used algorithms will also be studied; these might include DES, 3DES, AES, IDEA, RSA, Diffie-Hellman, MD5, SHA, and DSS. We will also examine how these algorithms are used to provide confidentiality, message authentication, key exchange, and digital signatures in applications such as client-server authentication, email security, and web security. 3 credit hours.

CS 536 Structure of Programming Languages (back to previous page)
Prerequisites: CS 212, CS 226. Computer language components: their specifications, semantics, implementation, and internal operation. The structure, syntax, and semantic aspects of several languages are examined. Short programs are required in two new languages. 3 credit hours.

CS 547 Systems Programming (back to previous page)
Prerequisites: CS 212, CS 320 or EE 371. Techniques for UNIX systems programming in the C language. Topics include macro preprocessors, conditional compilation, low-level interface programming, UNIX system calls including file operations and directory operations, process control, interprocess communication, and client-server routines. Programming projects required. 3 credit hours.

CS 563 Mobile Robotics (back to previous page)
Prerequisites: CS 226, CS 320. Principles of construction and navigation of mobile robots. Topics include locomotion mechanisms, sensor types and usage, reactive behavior, tracking, obstacle avoidance, path planning, and communication schemes for remote control. Students will work both individually and in groups to construct and program small mobile robots using Lego Mindstorms kits. 3 credit hours.

CS 590 Internship (back to previous page)
Prerequisite: Junior standing, approval of adviser. Student will undertake a supervised work experience of at least 100 hours, preferably in the local computer science industry. 0 credit hours.

CS 599 Independent Study (back to previous page)
Prerequisites: Junior or senior standing in computer science, consent of faculty supervisor, and approval of program coordinator. (Refer to academic regulations for independent study.) Exploration of an area of interest. Written and oral presentations are normally required. 3 credit hours.

 

 

Computer Science - Graduate Courses 

CS 604 Introduction to Programming/C (back to previous page)
Prerequisite: College algebra (M 109 or equivalent). A first course in computer programming using the C language, for those with little or no experience with programming. Problem solving methods, program planning, development, and testing. Sound programming practices and good style. Simple preprocessor usage, objects, expressions, functions, libraries, basic types, arrays, and pointers. Extensive programming will be required.

CS 610 Intermediate Programming/C (back to previous page)
Prerequisites: College algebra (M 109 or equivalent) and CS 604 or permission of instructor. An intermediate-level programming course covering all aspects of the ANSI C language: its preprocessor, syntax and semantics, modern usage, design and solution techniques, as well as elements of data structures, algorithms, and analysis of programs. Emphasis is on construction of portable, modular programs.

CS 617 Java Applet Programming (back to previous page)
Prerequisite: CS 610. Object-oriented programming, graphic interfaces, and event handling in Java, using Swing and the Abstract Windows Toolkit. Also covers concurrency and synchronization with threads.

CS 620 Data Structures (back to previous page)
Prerequisite: CS 610. Data structures, their functions and uses. Topics include basic data representations, arrays, linked structures, stacks, queues, trees, graphs, and hashing. The relationship between data structures and algorithms.  Sorting and searching, elements of complexity analysis. Recursion and other solution techniques. Students will develop and run several programs.

CS 622 Database Systems (back to previous page)
Prerequisite: CS 604 or knowledge of a programming language. A survey of database systems, their purposes, structures, functions and uses. Topics include an overview of DB systems, major DB models, design and implementation, introduction to typical DB systems, and internal operation of DB systems.

CS 622B Advanced Database Systems (back to previous page)
Prerequisites: CS 622. A second course in database systems covering advanced topics and new developments in the database field. Topics from: database design methodologies and evaluation, embedded SQL, concurrency control, recovery schemes, security, query processing and optimization, and an introduction to object-oriented databases.

CS 623 Rapid Software Development/VB.Net (back to previous page)
Prerequisites: CS 620, CS 622. A course for experienced programming students in rapid software development within the environment of V.B Net.  Topics include the VB.Net IDE (Integrated Development Environment), human-computer interaction, GUI interface development, legacy remote-database connectivity using ODBC, as well as ADO.Net (ActiveX Data Object) method. Students will conceive, design, code, implement, document, and present a substantial programming project, as the final product of this course.

CS 625 Software Project Management (back to previous page)
Prerequisite: CS 610. Project management, roles and planning, including software and estimation, software quality, industry standards, technical staff evaluation, team management, project recovery, and risk management.

CS 626 Object-Oriented Principles and Practice/C++ (back to previous page)
Prerequisite: CS 620. An advanced programming course taught in the C++ language. Objects, methods, abstract data types, data hiding, templates, inheritance, polymorphism, and exception handling. Students will design and code several modular projects using C++.

CS 627 Distributed Database Systems (back to previous page)
Prerequisites: CS 622, CS 644. A course on the concepts, analysis, and design of distributed database systems. Topics include architectures and design, semantic data control, distributed query processing, optimization of distributed queries, query decomposition, localization of distributed data, transaction management, concurrency control, distributed object management, distributed database reliability, and parallel database systems.

CS 628 Object-Oriented Analysis and Design (back to previous page)
Prerequisite: CS 617 or CS 623 or CS 626 or permission of instructor. An object-oriented design methodology course. Topics include system analysis, design and implementation. Primary emphasis on the Unified Modeling Language (UML) methodology and its importance in developing a software project. Students will design a major group project and implement portions using C++ or Java or C#.

CS 630 Introduction to Computing Theory (back to previous page)
Introduction to the theory of computers and computation including study of formal systems and methods; regular expressions, formal languages and grammars, elements of parsing theory, and the Chomsky hierarchy; finite automata and pushdown automata; decidability; Turing machines, Post machines and other formal computer models; and elements of complexity theory.

CS 632 Algorithm Design and Analysis (back to previous page)
Prerequisite: CS 620. Study of the time and space complexity of algorithms and of efficient algorithm design. Topics include amortized analysis, advanced data structures, greedy algorithms, divide-and-conquer, dynamic programming, randomized algorithms, and NP-Completeness.


CS 634 Cryptography and Data Security (back to previous page)
Prerequisite: CS 610. A survey of cryptographic concepts and algorithms and their application to data security. Techniques studied will include private key cryptosystems, public key cryptosystems, and hash functions. Commonly used algorithms will also be studied, including DES, 3DES, IDEA, RSA, Diffie-Hellman, MD5, SHA, and DSS. Other algorithms examined will be those used to provide confidentiality, message authentication, key exchange and digital signatures in applications such as client-server authentication, email security, and web security.

CS 636 Structure of Programming Languages (back to previous page)
Prerequisites: CS 620. The structure, syntax and semantic aspects of computer languages will be studied. Programs will be written in the FORTH language.

CS 640 Computer Organization (back to previous page)
The structure and the function of computers. The nature and the characteristics of modern computer systems and the operation of individual components: CPU, control unit, memory units and I/O devices. Topics include addressing methods, machine-program sequencing, microprogramming, complex I/O organization, interrupt systems, multiple-module memory systems and caches, peripheral devices, microprocessors, pipeline organization and memory interleaving.

CS 640B Parallel Computer Architectures (back to previous page)
Prerequisites: CS 610, CS 640. Parallel and other high-performance architectures and their implications for system software, including three structural classes: pipelined computers, array processors and multiprocessor systems. Topics include the memory, the I/O subsystems, and the interconnection network needed in parallel computers, the design principles and applications of pipelined super-computers, the interconnection structure of array processors, operating system controls, coordination of parallel activity and, performance of parallel systems.

CS 642 Computer Networks and Data Communication (back to previous page)
Prerequisite: CS 644.  The ISO 7-level model, network topology, communications theory, protocols, virtual circuits and packet switching, local networks (CSMA/CD, token ring), and error detection and correction. Additional topics may include security (Data Encryption Standard, public-key cryptosystems), TCP/IP, and sockets.

CS 644 Operating Systems (back to previous page)
Prerequisite: CS 640. Study of the function, structure and design of computer operating systems, principally multiprogramming systems. Topics include the management of processes and processor resources, data and memory and peripheral devices; concurrent processes; system protection; scheduling; paging; and virtual systems.

CS 644B Distributed Operating Systems (back to previous page)
Prerequisite: CS 644. A second course in operating systems and system architecture covering advanced topics in distributed systems, and new technology in hardware/software developments. Includes hardware and software concepts of distributed systems, interprocess communication, distributed objects, message-oriented and stream-oriented communication, synchronization, process scheduling, fault tolerance, consistency, replication, distributed file systems, real-time distributed systems, concurrency and access control.

CS 645 Network Administration (back to previous page)
Prerequisite: CS 640 or EE 610 or EE 682 or permission of the instructor. Fundamentals of administration of a networked computer. Topics include basic duties of a system administrator; overview of TCP/IP networking; file system layouts; user management; network services such as DNS, NIS, DHCP, file sharing, printing, mail, ftp, web, interfacing different operating systems on one network; and general security issues including prevention through firewalls and secure shells. Lab exercises will use both UNIX and Windows systems.

CS 646 Introduction to Computer Security (back to previous page)
Prerequisite: CS 604. Knowledge of networks is desirable. A survey of computer and network security issues including types of network attacks, viruses, intrusion detection and tracking, firewalls, trust relationships and authentication, secure connections, cryptography, and recent security policy and legislation.

CS 646B Topics in Computer Security (back to previous page)
Prerequisites: CS 645, CS 646. An in-depth look at the security-related issues of a selection of services and applications provided by computers in various infrastructures. Services may include, but are not limited to, email, websites, E-commerce support, communication techniques such as IM and VOIP, databases, directory services, authentication (using PKI, KDC, and biometrics), e-voting, J2EE, and .Net computing and server hardening.

CS 647 Systems Programming (back to previous page)
Prerequisite: CS 620. Techniques for systems programming using the C language and libraries. Topics include data structures for system implementation, string processing, macro preprocessors, conditional compilation, UNIX system calls including file operations and process control, interprocess communication, and client-server routines.

CS 649 Network Analysis (back to previous page)
Prerequisite: EE 610 or CS 642. Building on a foundation of knowledge of local area networks (LANs), wide area networks (WANs), and the OSI model, both large and small network designs are explored through lectures, labs, and individual and major group projects. Topics and labs include Windows server administration, UNIX connectivity, Ethernet and Token Ring networks, implementing WANs using a simulated T1 environment, wireless LAN environments, configuring DSL routers, multi-vendor routers, managed switches and network packet examination.

CS 650 Computer Graphics (back to previous page)
Prerequisites: CS 620, M 610 or equivalent. The mathematical foundations for computer graphics and introduction to the current state-of-the-art of graphics programming. Includes: 2D and 3D viewing, geometric transformations, clipping, segmentation, user interaction, curves, surfaces, color, modeling and object hierarchy.

CS 652 Script Programming for Network Administration (back to previous page)
Prerequisite:  CS 604.  Concepts and details of writing small programs in Python for the UNIX and Windows-Server operating systems. Security issues in shell scripts, batch file programming, Python scripts, and C programming. Students will write scripts to control the network system resources.

CS 655 Web-Database Application Development (back to previous page)
Prerequisites: CS 622 and one of CS 617 or CS 623 or permission of the instructor. Fundamental principles and techniques for creating network applications. Topics include establishing network connections, database connectivity, Java Server Pages (JSP) and Active Server Pages (ASP), HTML forms, client-side scripting, XML and network security issues.


CS 657 Human Computer Interaction/Visual Programming (back to previous page)
Prerequisite: CS 610 or permission of the instructor. The study of psychological and physiological factors on the design of the Human-Computer Interface (HCI). The influence of various input and output devices on the efficacy of the interaction. Evaluation of the interaction as a function of interface design. Evaluation issues including qualities such as learnability, usability, human efficiency and accuracy. Students will design, implement, analyze and evaluate graphical user interfaces (GUIs).

CS 660 Artificial Intelligence (back to previous page)
Prerequisite: CS 610  An introduction to the fundamental methods of artificial intelligence (AI) used in problem solving.  Techniques include heuristic search, optimization, genetic algorithms, game playing, expert systems, probabilistic reasoning, learning strategies, neural networks, natural language understanding, and image understanding. 

CS 663 Mobile Robotics (back to previous page)
Prerequisites: CS 620 or permission of the instructor. Principles of construction and navigation of mobile robots. Topics include locomotion mechanisms, sensor types and usage, reactive behavior, tracking, obstacle avoidance, path planning, and communication schemes for remote control. Students will work both individually and in groups to construct and program small mobile robots using Lego Mindstorms kits.

CS 665 Digital Image Processing (back to previous page)
Prerequisites: CS 610, M 610 or equivalent. Theoretical and mathematical basis of techniques of digital image processing and programming methodologies necessary to implement such techniques. Introduction to current capabilities of digital image acquisition hardware. Implementation of standard procedures for image enhancement, morphology, compression and storage. Image transforms and information extraction techniques in both the spatial and Fourier frequency domains.

CS 670 Selected Topics (back to previous page)
An examination of new developments or current practices in computer science. Topics will vary from trimester to trimester.

CS 690 Project (back to previous page)
Prerequisite: 15 credit hours, a quality point ration (QPR) of at least 3.1 and completion of all core courses. Petition to register must be approved by a supervising faculty member, the program coordinator, and the department chair. Completion of a significant project in the student's concentration area under the guidance of an adviser, such study terminating in a technical report of academic merit. For example, the project may be a survey of a technical area in computer science or may involve the solution of an actual or hypothetical technical problem.

CS 691 Computer Security Certification Preparation
Prerequisite: Completion of required course work in MS Computer and Network Security program. Under the supervision of a faculty member, the student will prepare for taking on a current standard certification exam.  This will include writing an independent research paper on a current security topic and passing an exam similar in nature to the certification exam. 

CS 692 Internship I (back to previous page)
Prerequisites: CS 620, 18 graduate credit hours, QPR of 3.0 or better, and permission of graduate coordinator and adviser. An on-the-job learning experience with a selected organization, taken for academic credit under the supervision of a faculty internship adviser. 1 credit.

CS 693 Internship II (back to previous page)
A continuation of Internship I. 1 credit.

CS 694 Internship III (back to previous page)
A continuation of Internship II. 1 credit.

CS 695 Independent Study I (back to previous page)
Prerequisite: Petition to register must be approved by a supervising faculty member, the program coordinator, and the department chair. Independent study under the guidance of an adviser in an area designated by the program coordinator in consultation with the student.

CS 696 Independent Study II (back to previous page)
A continuation of Independent Study I.

CS 698 Thesis I (back to previous page)
Prerequisite: 15 credit hours at the graduate level and completion of all core courses. Petition to register must be approved by a supervising faculty member, the program coordinator, and the department chair. Periodic meetings and discussion of the individual student's progress in the preparation of a thesis.

CS 699 Thesis II (back to previous page)
A continuation of Thesis I.

University of New Haven
University of New Haven
300 Boston Post Road
West Haven CT 06516
1-800 DIAL-UNH or 1-800-342-5864
University of New Haven About UNH