G Computer Sci

Graduate Courses

Our courses provide students with a strong foundation in software development, systems, and theory, as well as opportunities to gain expertise in specific areas.

Required Courses

CS 601 Principles of Software Development

Credits: 4 • Prereqs: None

Study of software development. Software engineering principles and structured methods are discussed as a prelude to the focus on object-oriented approaches. All phases of the software lifecycle are covered, including analysis, design, implementation and testing, and maintenance. Other topics include user interface design and development, software reuse and the design of reusable software components, software patterns, and web-based client-server programming.

CS 673 Algorithms

Credits: 4 • Prereqs: None

Algorithm analysis and asymptotic running time estimates. Expected running times and amortized analysis. Design techniques, including divide and conquer, greedy, and dynamic programming. Algorithms for searching and sorting, graphs, and advanced topics.

CS 631 Systems Foundations

Credits: 4 • Prereqs: CS 601 • Project Required

Study of the foundations of computer systems and the hardware/software interface. Topics span the design, implementation, and programming of processor architectures, networks, and operating systems. Computer architecture topics include instruction set design, cache design, hardware virtual memory, and virtualization. Network topics include network interfaces, protocol design, and network programming. Operating system topics include kernel design, the system call interface, resource management, software virtual memory, and file systems.

CS 652 Programming Languages

Credits: 4 • Prereqs: CS 601 • Project Required

Study of the design and implementation of software development languages. Topics chosen from: syntax, semantics, translation, run-time systems, advanced programming techniques, and debugging. Language families to be chosen include: functional, logic, visual, formal specification, design, pattern, database, and concurrent.

CS 690 Master's Project

Credits: 4 • Prereqs: CS 652 • Project Required

At the discretion of the instructor, the project will be either a sponsored project for a commercial concern or other institution or a research project. In either case, the project will result in the specification, design, and development of a significant software system with full documentation, an oral presentation to the university community, and a written report.

Graduate Electives: Systems and Networking

CS 615 Computer Architecture

Credits: 4 • Prereqs: CS 631 (B or Above) • Project Required

Survey of contemporary computer organizations covering early systems, instruction set design, processor implementation (pipelining, multiple issue, and speculative execution), memory hierarchy design (on-chip and off-chip caches, translation-lookaside buffers, and virtual memory), input/output (devices, busses, and processor interfaces), performance evaluation, and current research topics.

CS 621 Network Programming

Credits: 4 • Prereqs: CS 631 (B or Above) • Project Required

Network application programming. Upper-layer protocols and their interfaces. Topics to be chosen from: TCP/IP, sockets, remote procedure calls, network management, client/server programming, internet protocols (FTP, SMTP, HTTP, and SNMP), higher-level interoperability (CORBA), performance issues, and security.

CS 625 Parallel and Distributed Computing

Credits: 4 • Prereqs: CS 631 (B or Above)

Introduction to shared- and distributed-memory architectures. Mechanisms for parallelism: locks, barriers, semaphores, monitors, message-passing, RPC, and active messages. Programming shared- and distributed-memory systems. Introduction to parallel algorithms and parallel performance prediction and measurement. Programming languages and libraries that support parallel and distributed computing.

CS 635 Advanced Systems Programming

Credits: 4 • Prereqs: CS 631 (B or Above)

Focuses on advanced hardware and software topics in systems programming, such as device-driver design, interprocess communication, and kernel-module programming in the Linux environment.

CS 636 Operating Systems

Credits: 4 • Prereqs: CS 631 (B or Above) • Project Required

Study of the design and implementation of modern operating systems. Topics chosen from: operating system structure, scheduling, protection, virtual memory, communication mechanisms, concurrency, threads, multiprocessor support, distributed systems, performance evaluation, and current operating systems research.

CS 682 Distributed Software Development

Credits: 4 • Prereqs: CS 631 (B or Above)

Internet application development, including server-side technologies such as scripting languages, template frameworks, web page mining, and distributed computing issues such as peer-to-peer, multi-cast, and distributed agents.

CS 685 Wireless Sensor Networks

Credits: 4 • Prereqs: CS 631 (B or Above)

Study of the design and implementation of wireless sensing systems. Topics include communication, coordination, self organization, and energy efficiency. Necessary background material in networking and distributed systems will be covered.

Graduate Electives: Development and Theory

CS 662 Artificial Intelligence Programming

Credits: 4 • Prereqs: CS 652 • Project Required

Use of artificial intelligence techniques to solve large scale problems. Search strategies, knowledge representation, and other topics chosen from: simulated annealing, constraint satisfaction, logical and probabilistic reasoning, machine learning, expert systems, natural language processing, neural networks, genetic algorithms, and fuzzy logic. Both theoretical foundations and practical applications will be covered.

CS 675 Theory of Computation

Credits: 4 • Prereqs: CS 673 (B or Above)

Topics to be chosen from: models of computation and formal languages, computability and complexity, P and NP completeness and P = NP, advanced computing models.

CS 680 Web Systems and Algorithms

Credits: 4 • Prereqs: CS 652

Survey of Internet systems research including the anatomy of the web, search engine architecture and algorithms, information retrieval, crawling, text analysis, personalization and context, collaborative environments, and the semantic web.

CS 683 Computer Security and Privacy

Credits: 4 • Prereqs: CS 652 and CS 673

Learn the basics of computer security and the details of important network security protocols such as SSL/TLS. Topics include: symmetric key cryptography, public key cryptography, secure hash, wireless security, spam filtering, biometrics.

CS 686 Special Topics in Computer Science

Credits: 4 • Prereqs: CS 652 and Instructor Approval

Topics not covered by other CS curricular offerings. Students may register for this class in more than one semester.

Graduate Electives: Interdisciplinary

CS 640 Bioinformatics

Credits: 4 • Prereqs: Proficiency in CS, Biology, Chemistry, or Physics

Bioinformatics, one of the fastest growing application areas in science, is the realm where computer science meets molecular biology. This course will build on students' expertise in either computer science or natural sciences and prepare them to enter bioinformatics in either research or industry. Students will be brought up to speed in the content area which is unfamiliar to them. Students will be introduced to genomics, proteomics and software tools of the trade such as Pymol and Blast. They will learn bioinformatics algorithms such as dynamic programming, hidden markov models and monte carlo.

CS 642 Bioinformatics Research

Credits: 4 • Prereqs: Proficiency in CS, Biology, Chemistry, or Physics

Bioinformatics, one of the fastest growing application areas of computer science and biology, is research oriented. Computer scientists provide their expertise in computation, algorithms and software design to biologists and chemists. Together they solve problems in biotechnology and create tools for scientific investigation. This course provides students with real-world experience in the design and development of a significant bioinformatics project. Our projects will be either research that may lead to publication, or creation of software tools for use by the scientific community, in partnership with industry.

Graduate Electives: Special Electives

CS 694 - Research Seminar in CS

Credits: 1 • Prereqs: None

Exploration of research topics in Computer Science. Students will read academic papers, independently learn tools and technologies related to the area, present research findings, lead tutorials on relevant tools, and participate in group discussion.

CS 695 - Practicum Study

Credits: 2 • Prereqs: CS 652, Advisor Approval, and Good Academic Standing

Participation in a supervised work program where students apply USF coursework knowledge in a practical setting. Work is supervised by a USF faculty member and a corporate sponsor.

CS 698 Directed Reading and Research

Credits: 1 – 4 • Prereqs: CS 652, Advisor Approval, and Good Academic Standing

Written permission of the instructor, graduate program coordinator and dean is required.

CS 699 Master's Thesis

Credits: 4 • Prereqs: CS 652, Advisor Approval, and Good Academic Standing

Thesis approval form required.