1001C Introduction to Programming 3 credits 

This course introduces Computer Science concepts through the development of programs in the Python programming language. Students will learn to write code relevant to problems in the sciences and humanities. (lecture: 3 hours; lab: 2 hours). This course does not satisfy the prerequisite requirements for further Computer Science courses. Math and Computer Science majors must take COMP 1300.


1300C Introduction to Computer Science and Programming 4 credits (Spring and Fall)

Components of a computer system; machine, assembly, and high-level languages; the Python 3 programming language; numerical systems and coding; representation of data and instructions; data types, constants, variables; arithmetic expressions; logical expressions; assignment statement; sequencing, alternation, and iteration; arrays, subprograms, and parameters; simple I/O; techniques of problem solving; flowcharting; stepwise refinement; simple numerical examples; basic object oriented design. Principles of good programming style, expression, and documentation; control flow; invariant relation of a loop. (lecture: 3 hours; lab: 2 hours)
Prerequisites: three years of high school mathematics and placement by examination or MATH 1160 or MATH 1412

1320C Introduction to Data Structures 4 credits (Spring)

Arrays, internal searching and sorting, recursion, linked lists and linear allocation (stacks, queues, deques), bitwise operations. Elementary data structures, trees and algorithms for their manipulation, heaps, hash tables, graphs, spatial data structures, probabilistic data structure, notions of algorithm complexity, memory and data management systems. (lecture: 3 hours; lab: 2 hours).
Prerequisite: COMP 1300C.

1504 Discrete Structures 3 credits (Fall)

Boolean algebra and predicate calculus; proof methods; sets, functions, and relations; combinatorics; graph theory and algorithms; mathematical induction and recursion; probability and average case analysis of algorithms. Prerequisite: three years of high school mathematics.

2115C Computer Systems 4 credits (Fall)

The course is devoted to exploring the interaction between a program, the operating system, and the hardware. Topics include: the C programming language emphasizing pointers, explicit dynamic memory allocation, and formatted I/O; machine-level representation of programs; processor architecture; program optimization; the memory hierarchy; processes; UNIX I/O; concurrent programming. The course will have both lecture and laboratory components. (lecture: 3 hours; lab: 2 hours)
Prerequisite: COMP 1300C.

2314C Linux Programming for Data Analysis 4 credits (Fall)

Introduces Linux, with a focus on analyzing large data sets using operating system features that are accessible from the command line along with programming or scripting languages such as Python or Awk. Topics will include software development in a Linux environment, pipes, redirection, process management, and shell programming. (lecture: 3 hours; lab: 2 hours)
Prerequisite: COMP 1300C.

2545 Algorithms 3 credits (Fall)

Algorithms complexity and intractability. Combinatorial algorithms (permutations, combinations, partitions). String Algorithms (substring search, regular expressions, data compression).  Path finding in game trees and search trees, including minmax, alphabeta ,and A*. Network flow algorithms. Selected algorithms in parallel computing and computational geometry.
Prerequisites: COMP 1320C, 1504, MATH 1412.

3563 Database Systems 3 credits (Spring)

Goals of a Database Management System (DBMS), including data independence, relationships, logical and physical organization, schema and subschema; hierarchical, network, and relational modes; examples of implementation of various models; first, second, and third normal forms of data relations; canonical schema; data independence; data description languages: forms, applications, examples, design strategies; query facilities: relational algebra, calculus, data structures for establishing relations; query functions; file organization; index organization; file security; data integrity and reliability. Overview of Internet and World Wide Web information storage and retrieval systems, languages and methods.
Prerequisite: COMP 1320.

3640 Programming Languages 3 credits (Spring)

Formal language concepts, including basic characteristics of syntax and grammars; regular, context-free, and ambiguous grammars; constructs for specifying and manipulating data types; language features affecting static and dynamic storage man­agement; control structures and data flow; subroutines, procedures, block structures, interrupts, decision tables, recursion; relationship with good programming style; runtime considerations; interpretative languages, lexical analysis and parsing.
Co-requisite: COMP 1320C.

3650 Object-Oriented Software Design 3 credits (Spring)

Large-scale software design in the Java programming language, using inheritance, polymorphism. Methodologies for developing well-designed software, with an early emphasis on testing and reliability. File I/O, exception handling, multi-threading, GUI’s and event-driven programming.
Prerequisite: COMP 1300C.

3760 Artificial Intelligence 3 credits (tbd)

Heuristic versus algorithmic methods, cognitive processes, natural language processing, investigation of methods of making machines behave intelligently, problem solving, theorem probing, game playing, pattern recognition, question answering, learning self-organization, methods of programming such procedures, data structures and program organization; the mind-brain problem; the nature of intelligence. Advanced elective.
Prerequisite: COMP 2545.

3780 Web Programming and Development 3 credits (Fall)

The world-wide web was originally a vehicle for delivering documents. It still does this, but its most demanding current uses are as a platform for sophisticated interactive applications, replacing traditional mechanisms for distributing and installing software. Creating web applications requires different approaches from traditional applications and involves the integration of numerous technologies. This course introduces web technologies and gives the student experience creating web applications. In the process, students learn about markup languages, scripting, network protocols, interactive graphics, event-driven programming, and databases. Students also explore the way web applications can be exploited by malicious hackers, and the defensive strategies to keep hackers at bay.
Prerequisite: COMP 1300