Full cycle of a software system development effort, including requirements definition, system analysis, design, implementation, and testing. Special emphasis is placed on system analysis and design. The design phase includes development of a user interface. A large term project incorporates the…

An introduction to the application of programming methodology to the production of computer and video games, including user education, algorithms, display methods, and sound. This course will begin with two-dimensional games using available standard program libraries.

An introduction to the application of programming methodology to the production of computer and video games, including user education, algorithms, display methods, and sound. This course will begin with two-dimensional games using available standard program libraries.

Numerical methods and computing. Topics include: computer arithmetic; numerical solutions of nonlinear equations; polynomial interpolation; numerical differentiation and integration; numerical solutions of systems of linear equations, initial and boundary value problems, systems of ordinary…

Computationally oriented, covering a wide range of topics that are necessary for numerical simulation in science and engineering. Sequential and parallel numerical methods will be introduced. Available symbolic and numerical software packages (e.g., Matlab, Maple and MPI) and visualization tools…

In this course, we will study complex dynamic systems, examining their performance, reliability, etc. The reason for doing this is to improve such systems either in the design phase (before a costly system is built) or the operation phase (tune or upgrade). A simulation model may be used for…

Basic concepts of computer security and the theory and current practices of authentication, authorization, and privacy mechanisms in modern operating systems and networks.

Prerequisites: 
http://bulletin.uga.edu/…

The application of artificial intelligence methodologies and algorithms to problems involving the world wide web. Introduction to problem-­solving, knowledge representation, learning, and reasoning techniques and exploration of how they are applied to enable information provisioning, social…

Provides intermediate to advanced understanding of the use of Internet, World Wide Web, and network computing (including Java) technologies for management (search, access, integration, presentation) of multimedia information. Topics discussed include key techniques, tools and technologies for…

The theory and practice of database management. Topics to be covered include efficient file access techniques, the relational data model as well as other data models, query languages, database design using entity-­‐relationship diagrams and normalization theory, query optimization, and…

Algorithms, covering basic analysis techniques, basic design techniques (divide-­and-­conquer, dynamic programming, greedy), basic and advanced graph algorithms, and NP -­completeness theory.

Prerequisites: 
http://…

This is a graduate-level course on algorithms for finding approximate solutions to NP-complete problems. It introduces the class NP and explores the importance of the NP-complete problems. Approaches for finding approximate 

Prerequisites:

Application of discrete algorithms to computational problems in molecular biology. Topics are drawn from such areas as classical sequence comparison, multiple sequence alignment, DNA sequence assembly, DNA physical mapping, genome rearrangement, evolutionary tree construction, and protein…

In this course we will explore modern programming languages and the paradigm -­‐ procedural or imperative, functional, and logic programming -­‐ that each strives to accommodate. Projects involve at least three languages to get a feel for the language paradigms.

Prerequisites: …

This is an introduction to robotics with a focus on autonomous mobile robots. The two major issues dealt with are: (1) cognitive behavior, and (2) motion. Cognitive behavior addresses problem solving using sensory inputs and desired goals. Motion deals with aspects of movement from simple…

This is an introduction to robotics with a focus on autonomous mobile robots. The two major issues dealt with are: (1) cognitive behavior, and (2) motion. Cognitive behavior addresses problem solving using sensory inputs and desired goals. Motion deals with aspects of movement from simple…

Programming in LISP and PROLOG, with emphasis on artificial intelligence techniques. Other languages used for artificial intelligence work will be presented more briefly.

Prerequisites: 
http://bulletin.uga.edu/…

Programming in LISP and PROLOG, with emphasis on artificial intelligence techniques. Other languages used for artificial intelligence work will be presented more briefly.

Prerequisites: 
http://bulletin.uga.edu/…

An introduction to the fundamental concepts in computer science, including algorithms and logic, and the theoretical foundations in philosophy that define the field of artificial intelligence.

Prerequisites: 
http://…

An introduction to the fundamental concepts in computer science, including algorithms and logic, and the theoretical foundations in philosophy that define the field of artificial intelligence.

Prerequisites: 
http://…

An in-­depth introduction to evolutionary computation methods and an exploration of research problems in evolutionary computation and its applications which may lead to work on a project or a dissertation.

Prerequisites: 

Design and implementation of compilers for high-­level programming languages. Topics include all phases of a typical compiler, including scanning, parsing, semantic analysis, intermediate code generation, code optimization, and code generation. Students design and develop a compiler for a small…

The fundamental limitations on mechanized computation. In the first part of the course, the emphasis is on possible versus impossible computations. Three classes of languages are considered: regular, context-free, and recursively enumerable. In the second part of the course the emphasis shifts…

In recent years, computer scientists and physicists have begun to discuss the possibility of a computer whose hardware utilizes quantum phenomena. There has developed a notion of a quantum algorithm, and examples are known of computational problems whose solution can be carried out in…

Basic counting principles: permutations, combinations, probability, occupancy problems, and binomial coefficients. More sophisticated methods include generating functions, recurrence relations, inclusion/exclusion principle, and the pigeonhole principle. Additional topics include asymptotic…

Basic counting principles: permutations, combinations, probability, occupancy problems, and binomial coefficients. More sophisticated methods include generating functions, recurrence relations, inclusion/exclusion principle, and the pigeonhole principle. Additional topics include asymptotic…

Elementary theory of graphs and digraphs. Topics include connectivity, reconstruction, trees, Euler's problem, hamiltonicity, network flows, planarity, node and edge colorings, tournaments, matchings, and extremal graphs. A number of algorithms and applications are included.

Elementary theory of graphs and digraphs. Topics include connectivity, reconstruction, trees, Euler's problem, hamiltonicity, network flows, planarity, node and edge colorings, tournaments, matchings, and extremal graphs. A number of algorithms and applications are included.

Design and analysis of the structure and function of modern computing systems. Topics studied include combinational and sequential logic, number systems and computer arithmetic, hardware design and organization of CPU, I/O systems and memory systems, instruction set and assembly language design…

Coverage of the key concepts in modern operating systems. Specific topics include process management, synchronization mechanisms, scheduling strategies, deadlock detection/avoidance, memory management, file systems, protection and security, and distributed systems. Concepts will be reinforced…

Basic concepts of real-time systems with an emphasis on scheduling issues. Consideration of both offline and online scheduling. Online schedules will include static and dynamic priority systems, with and without allowing preemption. Also, consideration of resource sharing and multiprocessor…

In-­‐depth coverage of computer networks, including: digital data transmission and encoding, layered protocol models, Internet protocol, Internet client-­‐ server software, and network design methodology.

Prerequisites:

The fundamental concepts in distributed computing and the practical techniques for building distributed systems. Topics include distributed computing models, naming, synchronization, replication and consistency, fault tolerance, and security. Widely deployed distributed systems are used as case…

Issues in the design, development, and evaluation of user interfaces for computer systems. Concepts in human factors, usability, and interface design, and the effects of human capabilities and limitations on interaction with computer systems.

Prerequisites: 

Principles of two-dimensional and three-dimensional interactive graphics. Principles of scan conversion algorithms for two-dimensional and three-dimensional graphics primitives; image data structures and modeling techniques; visual realism, data storage/retrieval, compression, parallel computing…

Introduction to the technology and techniques used in virtual environments (also known as virtual reality). Students will gain knowledge about the latest innovations in this field, will understand the important research issues and methodologies for VEs, and will have the opportunity to gain…

This course introduces standard approaches to neuroimage analysis, including basic concepts of neuroimaging, basic algorithms, principles of software systems, and their applications. Neuroimage analysis software tools will be used in hands-on projects.

Prerequisites: 

Fundamentals of engineering design with emphasis toward integrating engineering science and computer science knowledge in team projects. Problem selection and application of design principles will be stressed.

Prerequisite:

Research while enrolled for a master's degree under the direction of faculty members.

Advanced supervised experience in an applied setting. This course may not be used to satisfy a student's approved program of study.

Algorithms, programs, and computing systems. Topics studied include: fundamental techniques of program development and supportive software tools; and programming projects and applications in a structured computer language. Hands-on experience using microcomputers.

Prerequisite:…

Preparation of a technical report to satisfy requirements for the MAMS degree.

Thesis writing under the direction of the major professor.

Theory and practice of knowledge based system construction with particular emphasis on rule-based expert systems. Topics include KBS fundamentals, knowledge representation, knowledge base construction, knowledge integration in databases, inference engines, reasoning from incomplete or uncertain…

In this course we will study advanced techniques of distributed software development. We will begin with introductory discussion of the general design principles of distributed systems and then move on to various specific issues, such as security, fault tolerance, distributed transactions, and…

Topics include computer architectures, interconnection networks, basic concepts in parallel computing, parallel algorithms, matrix multiplications, solving systems of equations, parallel direct and iterative methods, programming on different parallel architectures, and applications.

This is a computationally oriented course for solving scientific problems that arise in science and engineering. Students will learn different numerical techniques for solving differential equations. They will learn how to design and implement efficient sequential and parallel algorithms for…

This course is an introduction to the field of simulation, specifically we will focus on parallel and distributed simulation (pads). We will cover the foundational algorithms and techniques that have been developed over the last 25 years up to and including the current state of the art. Topics…

Exploration of both the foundation and recent advances in software security and cyber forensics. Topics will include software vulnerability analysis, advanced attack and defense techniques, cybercrime investigation and forensics, and security and forensics in different platforms (e.g., mobile,…

Recent advances in computer networks and system security. Fast and secure network systems, secure storage systems, high performance intrusion detection systems, and efficient anti-abuse systems.

Prerequisites:
http…

This is an advanced course on computer and network security. The course will mainly focus on reading and analyzing recent top- tier research publications in the field of computer security and privacy and on the research and development of systems that can enforce security and privacy in the real…

To study the concepts, techniques, and system standards relevant to system-level and data-level integration. Explore the pragmatics of enterprise integration. Develop the art of preparing and delivering fluid, concise, and effective talks and presentations.

Prerequisites:…

Advanced technical issues in Semantic approaches to managing information and process in the Enterprises, Across Enterprises, and on the Web, focusing on Semantic Web, Semantic Web Process, and Semantic Enterprise themes. Multidisciplinary approaches building upon techniques from AI, database,…

Advanced data science techniques for analyzing large-scale data in distributed environments. Students will develop scalable algorithms in frameworks such as Spark and Flink. This course is team-based, involving several mini-projects over the course of the semester with a competition as the final…

Advanced study of database systems. The course focuses on concepts, algorithms and technologies for relational, object-oriented and distributed database systems. Related technologies such as data warehouses and repositories will also be covered.

Prerequisites:

In this course you will learn what the Semantic Web is, and what its advocates believe it will eventually be able to do. You will be introduced to many useful Semantic Web languages and tools. In addition, other Semantic Web related topics such as web services, peer-to-peer systems and social…

This course investigates data structures, methods, technques, and theories for algorithm analysis and design. Topics include: advanced data structures and algorithms for graph, string, geometric, and operations research problems; algorithms on parallel computational models; and parameterized,…

Basic principles of human language; structure of English from a computational point of view; algorithms and techniques for computer understanding of human language.

Prerequisites:
http://bulletin.uga.edu/CoursesHome.…

Basic principles of human language; structure of English from a computational point of view; algorithms and techniques for computer understanding of human language.

Prerequisites:
http://bulletin.uga.edu/CoursesHome.…

This is an advanced topics course in the Theory of Computation. Students taking the course have had the equivalent of both CSCI 2670 and CSCI 6610 before. Topics vary with offering, typically reflecting research interests of the instructor. Research papers are used in lieu of a text. Students…

The selection of topics varies from year to year. Students will make presentations based on journal articles or original research.

Prerequisites:
http://bulletin.uga.edu/CoursesHome.aspx

Discussion of contemporary topics in quantum computing and quantum information.

This class will include two related but distinct components. In our classes on Mondays from 10:10 until 12:00, we will study the logic underlying logic programming and we will work exercises and prove theorems about logic. In our other two weekly classes from 10:10 until 11:00 on Wednesdays and…

This class will include two related but distinct components. In our classes on Mondays from 10:10 until 12:00, we will study the logic underlying logic programming and we will work exercises and prove theorems about logic. In our other two weekly classes from 10:10 until 11:00 on Wednesdays and…

This four-hour course address computer systems performance analysis. It introduces the main concepts and techniques needed to plan the capacity of computer systems, predict their future performance under different configurations, and design new applications that meet performance requirements.…

The course will cover fundamental issues dealing with the analysis and design of high-performance and parallel/distributed computer architectures. Fundamental architecture design techniques such as hierarchical memory design, pipelining and multiprocessing will be covered in detail. Specific…

This is the 8000 level course on operating systems. Topics include virtualization and cloud, windows and linux kernel internals, kernel module debugging and development, isolations and protections in virtual machines.

Prerequisites:

Advanced topics in real-time systems with an emphasis on scheduling issues. Topics will be different each semester. Possible topics include: multiprocessor scheduling, power-aware scheduling, application-specific scheduling (e.g., multimedia scheduling issues).

Prerequisites:…

Methods and computer tools used in the design of integrated electronics devices: layout, simulate, verify, and performance. Students will do a project design.

Prerequisites:

http://bulletin.uga.edu/CoursesHome.aspx…

Distributed systems have become widely pervasive and are having a tremendous impact on various domains of human activity. Today's distributed systems range from ad-hoc networks comprising of tiny sensor devices, to overlay networks such as peer-to-peer systems, to massive web farms of powerful…

Modern computing applications require storage, management, and processing of petabytes of data. The data is not only extremely diverse, ranging from unstructured text and relational tables to complex graphs, but it is also dynamic. This course focuses on developing scalable architectures,…

Introduction to image processing operations, including: low- and high-pass filters, component labeling, histogram techniques, edge detection, noise reduction, image enhancement, image segmentation, image data structures and pyramids, software tools for imaging, compression, image analysis and…

The course will cover fundamental issues and paradigms dealing with computer vision and pattern recognition. The material covered in the course will be divided into three phases: low-level vision, intermediate-level vision and high-level or cognitive vision. The material on low-level and…

Gain in-depth understanding, knowledge, and the ability to apply cutting-edge methods to process and quantitatively analyze images. This class presents modern image analysis tools, including wavelets, adaptive filters, active contours, and fractals. An important aspect is the design of…

Biomedical imaging has become a critically important approach to understand biomedical systems by allowing direct visualization of complex biomedical processes and interactions. Extraction and quantification of most relevant biomedical information from imaging data is an integral part of…

This course introduces advanced topics and applications of biomedical informatics, including health informatics systems, imaging informatics systems, computer-aided diagnosis, computer-aided follow-up, and translational biomedical informatics systems. Advanced applications of state-of-the-art…

Choosing optimally among different lines of actions is a key aspect of autonomy in artificial agents. The process by which an agent arrives at this choice is complex, particularly in environments that are noisy and/or shared with other agents. This course will focus on how to make optimal and…

Genetic Algorithms are heuristic search routines that are guided by a model of Darwin's theory of natural selection or the survival of the fittest. The basic idea behind the genetic search strategy is to generate solutions that converge on the global maximum (i.e., the best solution in the…

Genetic Algorithms are heuristic search routines that are guided by a model of Darwin's theory of natural selection or the survival of the fittest. The basic idea behind the genetic search strategy is to generate solutions that converge on the global maximum (i.e., the best solution in the…

Machine learning is a sub-field of artificial intelligence which is concerned with computer programs that can automatically improve their capabilities and/or performance by acquiring (learning) experience. The main objectives of this course are to provide students with an in-depth introduction…

Machine learning is a sub-field of artificial intelligence which is concerned with computer programs that can automatically improve their capabilities and/or performance by acquiring (learning) experience. The main objectives of this course are to provide students with an in-depth introduction…

Advanced topics in data analysis, with an emphasis on statistical learning and related optimization problems. The applications include regression, classification, and other tasks in image analysis. The lectures will be based on books and articles in the field of computer vision and medical image…

Weekly research seminar. Students must attend and give at least one presentation at the seminar.

Research while enrolled for a doctoral degree under the direction of faculty members.

Advanced supervised experience in an applied setting. This course may not be used to satisfy a student's approved program of study.

Dissertation writing under the direction of the major professor.