(Some older links may not work.) A chronological view of recent courses taught can be found here.

Software Engineering Courses

CSCI 4830/8836 - Intro to Software Engineering

Basic concepts and major issues of software engineering, current tools and techniques providing a basis for analyzing, designing, developing, maintaining and evaluating the system. Technical, administrative and operating issues. Privacy, security and legal issues. (CSCI 4830 is crosslisted with a graduate course, CSCI 8836.)

F'05, Sp'06, F'06, Sp'07, F'07, Sp'08, Sp'09, F'10, F'14, Sp'15, Su'16, Su'17, Su'18, Su'19, Su'20

CSCI 4970 - CS Capstone

The Capstone Project completes a Computer Science student's undergraduate experience. Students will work on a team-based real-world project, practicing software engineering skills and applying fundamental computer science principles acquired throughout their undergraduate study.

Sp'11, F'11, Sp'12, F'12, Sp'13, F'13, Sp'14, F'14, Sp'15, F'15, Sp'16, F'16, Sp'17, F'17, Sp'18, F'18, Sp'19, F'19, Sp'20, F'20

Capstone projects from F'20

CSCI 8700 - Software Specification and Design

A continuation of the study of software engineering with an emphasis on early phases of software development, namely requirements engineering/specification and design. Fundamentals of quality software design. In-depth study of various software requirements specification and design techniques.

Sp'15, F'15, F'16, F'17, F'18, F'19, F'20

CSCI 8710 - Modern Software Development Methodologies

Designed to introduce students to advanced object technology and other modern methodologies for developing software systems. Intended for graduate students who have mastered the basic concepts and issues of software engineering. Course covers advanced object-oriented software development. The course also covers several offshoots of object technology, including: component-based software engineering, aspect-oriented software development, software product line engineering, service-oriented computing, etc.

F'05, F'07, F'08, F'09, F'10, F'11, Su'15

CSCI 8790 - Advanced Topics in Software Engineering

An in-depth study of one or more topics in the field of software engineering such as human factors in software engineering, software specifications and modeling, reuse and design recovery, software valuations, software management, emerging technology and applications.

Sp'10: For Spring 2010, the course focused on empirical studies in software engineering. Students designed experiments for assessing the efficacy of various software engineering techniques. The final project for the course was to design an empirical study to answer a research question of the students’ choice.

CSCI 8920 - Special Topics in Computer Science

An in-depth study, at the graduate level, of one or more topics that are not treated in other courses.

F'08: For Fall 2008, the topic was Software Maintenance and Evolution. This course exposed students to the issues involved in the continued evolution of existing software systems. Topics included laws of software evolution, mining software repositories, analysis of temporal data, static program analysis, and change impact analysis.

CIST 9080 - Research Directions in IT

The purpose of this course is to provide a forum for interaction among doctoral students and faculty on topics of relevance to IT research and make them familiar with current and future research directions in IT.

This is a seminar-style course, with a different faculty each week discussing research topics in their area.

F'09, Sp'11, Sp'13, Sp'16

Human-Computer Interaction Courses

CSCI 4250/8256 - Human-Computer Interaction

Human computer interaction is concerned with the joint performance of tasks by humans and machines; human capabilities to use machines (including learnability of interfaces); algorithms and programming of the interface; engineering concerns that arise in designing and building interfaces; the process of specification, design, and implementation of interfaces; and design trade-offs.


CSCI 4260/8266 - User Experience Design

User experience (UX) design is concerned with the application of user-centered design principles to the creation of computer interfaces ranging from traditional desktop and web-based applications, mobile and embedded interfaces, and ubiquitous computing. This course provides in-depth, hands-on experience with real world application of the iterative user-centered process including contextual inquiry, task analysis, design ideation, rapid prototyping, interface evaluation, and reporting usability findings.

Sp'06, Sp'09, Sp'10, Sp'11, Sp'12, Su'13

Introductory Computer Science Courses

CSCI 1200 - Computer Science Principles

This course introduces students to the foundational principles of computer science. It aims to help students learn the essential thought processes used by computer scientists to solve problems, expressing those solutions as computer programs. The exercises and projects make use of mobile devices and other emerging platforms. This is an implementation of the CS Principles AP course.

Sp'13, F'13, Sp'14, F'14, F'16

CIST 1400 - Introduction to Computer Science

An introduction to programming within the context of a high level modern programming language. Coverage of fundamental programming concepts and program design; including arrays, user defined types, and objects. This course has a required laboratory component; students must register for a laboratory section when enrolling in lecture.


Computer Science Teacher Education Courses

CSTE 8020 - Exploring Computer Science for Teachers

This course provides a breadth first introduction to computer science for pre-service and in-service teachers. The Exploring Computer Science curriculum serves as a guiding framework for this course, which introduces domain knowledge and appropriate teaching techniques related to teaching human computer interaction, computational problem solving, web design, programming, data analysis, and robotics in school environments. In addition the course covers ethical and social issues in computing along with an overview of computing careers.


CSTE 8040 - Object-Oriented Programming for Teachers

This course provides an in-depth treatment of the fundamentals of object-oriented programming (OOP) in Java programming language environment. Topics include data types and information representation, control structures, classes and objects, methods, encapsulation, inheritance and polymorphism, and use of introductory data structures to solve real-world problems. Additionally, this course interleaves coverage of OOP content with discussion of common learner misconceptions and teaching strategies/tools that can be employed to aid learners' mastery of this material. This course prepares students to implement the Advanced Placement Computer Science A curriculum in a secondary school setting.


Other Courses

CSCI 3220 - Data Structures

This course introduces students to a number of data structures such as trees, hash tables, priority queues and graphs as well as different algorithm design methods by examining common problem-solving techniques.


CSCI 3550 - Communication Networks

This course is designed to bring students up to the state of the art in networking technologies with a focus on Internet. It will cover the principles of networking with an emphasis on protocols, implementations and design issues.