University of San Francisco

M.S. in Internet Engineering

Joint B.S. in Computer Science/M.S. in Internet Engineering (4+1 Honors Program)

Program Overview
The M.S. program typically requires two years of study, with students taking two four-unit courses per semester along with one summer course (or a third course in one of the semesters) for a total of 36 units.

Students typically begin by enrolling in CS 601, Object-Oriented Software Development and CS 662, Artificial Intelligence, in their first semester. 601 provides a strong foundation in object-oriented design and development and the development of dynamic web pages. 662 provides a strong basis in artificial intelligence algorithms and techniques and their application to software for the Internet.

The typical second semester includes CS 682, Distributed Software Development and CS 680, Internet Systems Research. 682 follows the object-oriented course through further exploration of client-server web development as well as peer-to-peer, multi-cast, and agent-based software development. The Internet Systems Research course follows AI (662) by studying innovative systems based on AI techniques including search engines, crawlers, personalized web interfaces, and the semantic web.

CS 689, Residency in Internet Engineering, is offered in the summer. Students apply their newly learned skills in a real-world project, generally working on-site at an affiliated organization with the directing professor. Students that cannot participate in the summer program may fulfill this requirement through a directed project during a fall or spring semester.

In the second year, students take CS 686, Human-Computer Interaction, CS 687, digital society, a graduate elective, and 690, Masters Project. 690 is the culminating course for the degree with students completing a team software project and making use of the skills they have learned in the program.

Foundational Requirements
Students who are admitted into the program but do not have a computer science undergraduate degree must complete the following foundational requirements. These courses may be taken at USF or elsewhere. They do not count towards the 36-units required for the Master's degree.  Equivalent work experience can be used to waive one or more of the foundational requirements (with consent of the department).

Requirement USF Course that fulfills
Introductory Programming I 0203-110
Introductory Programming II  0203-112
Discrete Mathematics 0206-201
Data Structures and Algorithms 0203-245
Upper division Programming e.g., 0203-342 (soft. engr.),0203-345 (programming lang.) 


Required Courses (36 units)

0203-680. Internet Systems Research (4) 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. pre-requisite: CS 662 Artificial Intelligence

0203-682. Distributed Software Development (4) Internet application development, including server-side technologies such as scripting languages, template frameworks, and web page mining, and distributed computing issues such as peer-to-peer, multi-cast, and distributed agents. pre-requisite: CS 601: Software Development.

0203-686. Human Computer Interaction  (4) Design principles and techniques used to facilitate the interaction between people and computers. Topics covered include user-interface design and evaluation, web site design, prototyping, usability engineering, presenting complex information, hypertext, multimedia, scientific visualization, input devices, ubiquitous computing, and cognitive models.

0203-687. Digital Society (4) A study of the effects of computing and the Internet on modern society. Topics include digital libraries, e-commerce, copyright law and open source movements, on-line communities, education and technology, and privacy and security.

0203-689. Residency in Internet Engineering (4) Participation in a cooperative work program with one of the USF affiliated organizations. Typically, students will work in groups and be supervised jointly by both an affiliate manager and a USF professor. prerequisite:  680 and 682

Required Courses that are also courses in the M.S. in C.S. program

0203-601. Object-Oriented Software Development (4)Software engineering principles with a 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. pre-requisite: an upper division programming-oriented CS course.

0203-662: Artificial Intelligence Programming (4).  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.  Coursework includes written assignments and programming projects. prerequisites: CS 245. Data Structures

0203-690: Master's Project  (4).  At the discretion of the instructor, the project will be either a sponsored project for a commercial concern 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. Four hours lecture. prerequisite: CS 601, 662, 680, 682.

Electives (1 of the following required)

0203-621: Network Programming (4). . 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 (such as FTP, SMTP, HTTP, and SNMP), higher-level interoperability (CORBA), performance issues, and security. Project required.  Four hours lecture.  Spring 2004. Prerequisites: CS 245. Data Structures and Algorithms, 326. Operating Systems]and 336. Computer Networks.

0203-652: Programming Languages (4). 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.  Project required.  Prerequisite: CS 326. Operating Systems and CS 345, Programming Language Paradigms or CS 414 Compilers

0203-673: Algorithms (4).  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.  prerequisites: CS 245.Data Structures and Algorithms.

0203-698: Directed Reading and Research
(1-4). Written permission of the instructor, graduate advisor, and dean is required. Must be in an Internet related field.

Typical Schedule (2  year Master's program)

Fall 1  

Spring 1  

Summer 1  


601 O.O Software Dev.  

682 Distributed Development  

689 Residency

662 Artificial Intelligence  

680 Internet Systems Research  


Fall 2  

Spring 2  

686. HCI   Design  

690 Master's Project  

6xx  Graduate Elective  

687 Digital Society  


Joint B.S. Computer Science/M.S. in Internet Engineering   (4+1 Honors Program)

This five year program allows highly motivated students to earn both a B.S. in Computer Science along with a Masters in Internet Engineering in just five years. Open only to honors students with at least a 3.3 grade point average, students begin taking graduate courses as early as their junior year.



Students may not count courses for both the Computer Science degree and the Internet Engineering degree, except for 1) the graduate course CS 601: Object-Oriented Development may be substituted for undergraduate requirement CS 342 Software Engineering, and 2) CS 690 Master's Project may be substituted for undergraduate requirement CS 490 Senior Project. Other than these two exceptions, a course cannot be counted for both the M.S. in Internet Engineering degree and an undergraduate Computer Science course.


Typical Schedule (4+1 Honors Program)


Fall Year 3  

Spring Year 3

601 OO Software Dev  

315 Architecture

326 Operating Systems  

414 Compilers






Fall Year 4  

Spring Year 4  

Summer Year 4

662 Artificial Intelligence  

680 Internet Systems Research  (4)  

689 Residency (4)

4xx Undergraduate Elective  

682 Distributed Development


Undergraduate Elective




Fall Year 5  

Spring Year 5

685 HCI  Design  

690 Master's Project

6xx  Grad Elective  

687 Digital Society