Register for courses - Computer Science (CSC)
Visit your program page or contact your advisor for a full overview of the courses you'll need.
Upcoming or current semester courses offered
Review of computer science practical experiences resulting from participation in coop/internship program.
Provides an overview of current computing technology, organization, and use. Topics surveyed include data representation and storage, hardware and software organization, communications technologies, ethical and security issues. Provides hands-on training in common application software, such as word processing, spreadsheets, presentation, as well as in electronic telecommunications, such as e-mail, Internet and database searches. The University database and Internet pages are emphasized.
Students learn how to reduce exposure to risks and how to identify, assess and repair infected devices.
Introduction to Unix, Unix editor, and C Programming Language. Unix development tools and fundamentals of C language discussed.
Problem solving with algorithms, and their realization as computer programs using a structured, general purpose programming language; data types, operators, expressions, assignment, input and output, selection and repetition control structures; modularity and procedural abstraction using functions with parameters; structured data types, arrays, pointers and strings.
Mandatory two-hour closed laboratory; discussion of lecture materials and completion of hands-on exercises. Implementing programs using a general purpose programming language; software resulting from this can be used in more advanced computer science courses.
Introduction to fundamental control and data structures in computer science such as algorithms and complexity; recursive algorithms; program correctness using the predicate calculus; reasoning about algorithms using mathematical induction; divide and conquer algorithms; recurrence relations; set properties and their computation; and computing with relations. Graph properties and their computation, and tree properties and their computation, will be covered if time permits.
Discussion and supervised hands-on exercises to complement CSC 1500.
Elements of C++; carrays, pointers and references; operators; classes and objects.
Rigorous introduction to fundamental object-oriented concepts and techniques of computer programming using an object-oriented language. Introduction to data abstraction; design of abstract data types. Introduction to recursion; programming with generic data types; inheritance; polymorphism; and exception handlers. Concepts applied to console programs and event-driven programming using a simple graphics API.
Mandatory two-hour supervised lab; hands-on exercises to complement CSC 2110. Object-oriented techniques in a general-purpose object-oriented programming language. Resulting software may be used in more advanced computer science courses.
Design and implementation of fundamental abstract data types of computer science (such as stacks, queues, trees, lists, hashing, and graphs), using an object-oriented language. Programming requirements include the implementation of abstract data types using arrays and dynamic links; recursion; sorting and searching; hashing; and string processing. Introduction to algorithm analysis.
Hands-on lab which complements lecture material in CSC 2200. Lab attendance is mandatory. Implementing data structures and algorithms using object-oriented techniques; techniques of analysis of algorithms; resulting implementations are working pieces of software that can be used in more advanced computer science courses.
Introduction to the fundamentals of programming using Java. Topics include: object-oriented programming, classes, constructors, flow control statements, data types, methods, inheritance, data hiding, abstraction, exceptions, file I/O, Java GUI, and Java packages.
Organization and architecture of computer systems. Topics include: digital logic and digital systems; machine-level representation of data and programs; assembly level machine organization and programming; register-level description of computer execution and the functional organization of a computer; role and function of programming languages, libraries and operating systems; performance evaluation; systems programming.
Two-hour closed lab; students explore and experiment with assembly language programming, data representation, and simple circuit design. Lab attendance is mandatory.
Formal techniques to support design and analysis of algorithms: underlying mathematical theory and practical considerations of efficiency. Topics include asymptotic complexity bounds, techniques of analysis, algorithmic strategies, advanced data and file structures, and introduction to automata theory and its application to language translation.
User interface design, usability, evaluation, user-centered design.
Understanding the Internet using several access methods; required software and tools. Topics include: e-mail, FTP, Telnet, Gopher, Archie, Newsgroups, WWW, HTML, CGI and PHP scripting and how to create an active web site. Laboratory exercises required.
Software life cycle; software requirement analysis; software system design; software implementation and testing; software maintenance; team programming; ethics and programmers.
Mandatory two-hour closed lab; lecture materials and hands-on exercises which complement CSC 4110.
Introduction of topics such as network architecture, multiple access control, packet switching, routing and flow control, congestion control and quality-of-service, Internet protocols, and elements of distributed computing.
Operating system services; file systems; CPU scheduling; memory management; virtual memory; disk scheduling; deadlocks; concurrent processes.
Mandatory two-hour closed lab; lecture materials and hands-on exercises which complement CSC 4420. System call interface; introduction to operating systems programming; use of simulation to better understand operating systems behavior.
Finite automata and regular expressions; context-free grammars; pushdown automata; Turing machines; hierarchy of formal languages and automata; computability and decidability.
Topics include: database concepts, ER modeling, schemas and constraints, SQL and relational algebra, web-based database applications, triggers and views, physical organization and indexing, query processing, query optimization, NoSQL databases.
Individual study as agreed on by student and supervising faculty. Primarily for material not covered in regular courses.
Topics to be announced in the Schedule of Classes.
Review of computer science practical experiences resulting from participation in the cooperative work-study program.
Development of skills for planning, managing, implementing, and documenting complex software projects; legal, social and ethical issues in software development and computer use. Project management techniques; professional conduct, social responsibility, liability, ownership of information, privacy, security and crime.
Development of project management skills while managing, implementing and documenting a real-world project from initial idea to final implementation. Theory, software engineering techniques, group activities, and computer tools such as Microsoft Project. Mandatory lab.
Independent study under supervision.
Introduction to problem solving methods and algorithm development; data abstraction for structures such as stacks, queues, linked lists, trees, and graphs; searching and sorting algorithms and their analysis.
Fundamental concepts and skills of developing networked, distributed, and concurrent applications. Topics include: inter-process communication, TCP/IP sockets programming, remote method invocation, multithreading, concurrency and synchronization.
Fundamental technologies for enabling an e-society which is more predictable, more accountable, and less vulnerable to attacks. Covers three components: security requirements and protocols, cryptography algorithms, and case studies.
Fundamentals of game programming and game design using C++, DirectX, Windows, and C#.
Laboratory for CSC 5430. Focus on modding, or making changes to existing programs to achieve specific results.
History and development of the world-wide web. Techniques for authoring static and dynamic content for the world-wide web. Web security techniques. Electronic commerce on the web. Lab exercises required.
Introduction to basic algorithms and software tools for intelligent data representation and analysis, including: data pre-processing, data exploration and visualization, model evaluation, predictive modeling, classification methods, association analysis, clustering, anomaly detection, representing extracted patterns as expertise, tools for data mining and intelligent systems such as WEKA, CLIPS, and MATLAB.
Through algorithmic investigation, brainstorming, and case analysis, students develop the skills and strategies that are necessary for effective leaning from data, including Big Data emerging from science and engineering.
Graphics devices, graphics primitives, 2-D transformations, windowing and clipping, modeling 3-D objects, 3-D viewing transformations, hidden surface removal, shading and color.
Topics to be announced in the Schedule of Classes.
Software process models; advanced software system design; software project management; software analysis; testing and performance analysis; software maintenance; reverse engineering; software reuse; software metrics; object-oriented development.
Parallel computing concepts, examples of parallel computers, parallelism in algorithms / data / programs, experiences with state of the art parallel computers.
Operating system design for real-time and embedded systems. Focus on scheduling, synchronization, communication, and process and memory management for time-critical and resource-constrained applications.
Data communication fundamentals and principles governing computer communication networks. Components of networks, how they are connected; basics of design and implementation of network protocols.
Recursive and recursively enumerable languages; decidability and computability; Rice's theorem; time complexity; space complexity.
Best case, worst case, and expected case complexity analysis; asymptotic approximations; solutions of recurrence equations; probabilistic techniques; divide-and-conquer; the greedy approach; dynamic programming; branch and bound; NP-completeness; parallel algorithms.
Data models, normal forms, relational systems and SQL, query optimization, object-oriented systems, object-relational systems, student Oracle project.
Basic concepts; topics include: recursive problem solving, knowledge representation using semantic networks and frames, state space search methods, planning and problem solving, game playing and adversarial search methods, rules and production systems (RETE networks), constraint satisfaction techniques and applications, optimization algorithms including genetic algorithms, logic programming. Implementation in Lisp and Prolog.
Review of image formation and acquisition; image transformation; image enhancement and restoration; image compression; morphological image processing; edge detection and segmentation; architecture for image processing.
Representing curves and surfaces; solid modeling; fractal geometry; camera models; illumination models; ray tracing; radiosity methods; transparency; texture; graphics packages.
Current topics to be announced in the Schedule of Classes.
Experience in industry using tools from the computer science curriculum. Students provide a written report based on the internship experience.
Problems in parallel algorithms: design, analysis, complexity. Cluster and grid computing: tools, programming, and applications.
Models of distributed systems, distributed synchronization, algorithms, consistency and replication models and algorithms, fault-tolerance in distributed systems.
Foundations of computer networking (e.g., performance evaluation and analysis, protocol specification and verification), latest development in network architecture and technology (e.g., wireless networks, sensor networks, peer-to-peer networks, vehicular networks).
Concepts of bioinformatics; tools for storing and analysis of bioinformatics data.
Hands-on experience and exercises for CSC 7300/MBG 7300 lectures.
Concurrency control, transaction processing, crash recovery, security, distributed and heterogeneous databases, data warehousing, data mining, multimedia systems, student Oracle project.
Application of various basic/advanced data mining techniques to real-world problems.
Supervised learning including regression, kernel-based, tree-based, probability model based and ensemble learning; unsupervised learning including distance based and model based; Markov Chain Monte Carlo (MCMC) methods; graphical models; current topics from literature.
Topics to be announced in the Schedule of Classes.
Discussion of current papers in the field.
Discussion of current research by faculty and visitors.
Research in preparation for doctoral dissertation.