Graduate Degree Programs

Program Offerings

The following graduate programs are offered by the Loyola CS Department. Each program has tracks for students to specialize in. These can be viewed in each programs respective webpage.

Important

Undergraduates presently in our department with a strong background are urged to consider overlapping one of these programs with their undergraduate work via the BS/MS Dual Degree Programs.

  • The M.S. in Computer Science is more foundational, requiring you to get experience with a broad range of core computer science concepts. It is our only program with a Thesis Option. Students from this program are the ones most likely to go on to a Ph.D. program.

  • The M.S. in Information Technology is management and business process facing. It is distinguished from a pure business degree by its requirement and frequent use of basic programming and other technical skills. If you end up managing technical workers, you will have an edge over those with pure business degrees. Read to see the general program and the special opportunities for a totally online version.

  • The M.S. in Software Engineering is focused on knowledge and abilities to produce high-quality software for many different domains.

  • The M.A. in Digital Humanities is a separate interdisciplinary program, partnered with Computer Science.

Program Prerequisites

Important

If you were a Loyola Undergraduate who declared a CS, IT, SE, etc. major prior to Fall 2019, you do not have to worry about taking COMP 272: Data Structures II as the content was covered in COMP 271: Data Structures I.

All students need the equivalent knowledge of COMP 170: Introduction to Object-Oriented Programming, COMP 271: Data Structures I, and COMP 272: Data Structures II. This knowledge is a prerequisite to essentially all the graduate courses in the Computer Science Department with the exception of COMP 417: Social, Legal, and Ethical Issues in Computing.

M.S in Computer Science

Students in the Computer Science Graduate Program need the strongest preparation. Most will have an undergraduate degree or at least the first two years of foundational undergraduate courses. This would include the addition of equivalents of our COMP 163: Discrete Structures and COMP 264: Introduction to Computer Systems and COMP 363: Design and Analysis of Computer Algorithms to the two courses already listed above. In particular advanced undergraduate algorithm background is required before taking the required spring grad course, COMP 460: Algorithms and Complexity.

Missing Prerequisites

If you are missing prerequisites, you can fulfill the requirements by:

  • Taking them somewhere else * However, while possibly cheaper and more convenient to your location, there is the possibility that the education you recieve will not be as good or covers what we want from our students

  • Taking them at Loyola:

Important

The compressed prerequisites can be taken after admission to the graduate program. Then you become a full-time graduate student if you add a third course - a graduate course not requiring the prerequisites resulting in a faster full-time program completion.

Compressed Prep Courses

In the Fall or Spring semesters, you have the opportunity to take a compressed intensive sequence of the COMP 170: Introduction to Object-Oriented Programming and COMP 271: Data Structures I prerequisites in one semester. This course consists of two 7-8 weeks courses in succession, each with the same total contact hours of regular 15-week courses (6.25 credit hours).

To be a full-time graduate student at the same time, the most common additional course is the required COMP 417: Social, Legal, and Ethical Issues in Computing, which has no prerequisite.

COMP 170: Introduction to Object-Oriented Programming does not require any background in programming, but if you have no backgound in programming, then it is important to have a math background in which you are comfortable with the material in a precalculus course like our MATH 118: Precalculus, which includes significant manipulation of functions and logical symbolic progressions.

If you have a previous modest introduction to programming, including defining and using functions, then the formal math background is not so important.

Students who neither have this math background nor any programming at all may want to get a more gentle introduction to programming first, as in our COMP 150: Introduction to Computing. It is offered in the Fall and Spring semesters and online during the summer.

If you do need the extra preparation, then this will slow you down by a semester.

Warning

Many transitioning students with full-time jobs have found the compressed prerequisite course to be too rigourous to take on even without an additional grad course.

Basic Programming Prerequisites

Knowledge of the content below is a prerequisite for almost all of the graduate courses in the Computer Science Department. The descriptions below are for the courses at Loyola, in a pretty standard introductory sequence. If you took these subjects elsewhere, you are not likely to have the exact the same collection of topics, but if you are close, there should not be much problem filling holes as needed.

Expectations from COMP 170

List of top ten concepts you should understand at the end of COMP 170: Introduction to Object-Oriented Programming in Java, C#, C++ or a similar language:

  1. Be able to distinguish between class and instance
    • Class is an abstract representation or model (class aka type, abstract type, factory for objects). The class has field definitions (or attribute definitions) and operations (or methods) to implement their behaviors.

    • Instance (aka class instance, variable) is an actual, specific, concrete thing and has specific field values (or attribute values).

    • All instances of a class share the same operations and attribute definitions.

  2. Know syntax rules and coding style
    • Learn the basic picky rules of syntax and use them correctly. Key items: placement of “;” use of case (“ClassSchedule” vs. “classSchedule”); distinguish declarations and executable statements.

    • Format code readably according to agreed-upon style.

  3. Use conditional control structures fully and correctly
    • Construct programs with “if….then”, and “if….then…else”. Understand the nesting of control statements and blocks ( “{“ and “}”).

    • Briefly, “Nesting, blocks, no dangles”.

  4. Construct loops with control structures
    • Use “while”, “do”, and “for” control structures to implement algorithms successfully.

    • Briefly, “avoid never-ending loops, avoid off-by-one problems”

  5. Use the primitive types and operators appropriately
    • Understand the use and limitations of the primitive types.

    • Know the most useful arithmetic, relational, and logical operators and use them in expressions, with parentheses when necessary.

  6. Learn how to create good Object Oriented encapsulation
    • Achieve a deep understanding of the proper use of the access modifiers “private”, and “public”.

    • Be able to design well-structured classes.

    • Know when and how to use “static”.

  7. Construct and understand methods fully
    • Define and use methods, including formal parameters and return values.

    • Distinguish between formal parameters (aka parameters) and arguments in the call to a method.

    • Comprehend scope and lifetime of objects. Understand the visibility of objects and how to implement finding the right object at the necessary time.

    • Know how to ask a particular instance of a class to do something. Know how to construct associations between classes.

    • Understand what is happening is a nested stack of method calls.

  8. Be knowledgeable about important library container classes and arrays
    • Be able to declare and use container objects like for lists and arrays. Understand how to find things in containers and arrays. Use index variables effectively.

  9. Perform simple input/output processing
    • Learn how to do basic input and output statements with an interactive user and with files. Be able to work with Strings.

  10. Understand Object Oriented Interfaces * Know how to define and use simple interfaces.

Expectations from COMP 271 and COMP 272

List of concepts you should understand at the end of COMP 271: Data Structures I and COMP 272: Data Structures II:

  1. Object Oriented Program * Be able to write interface/abstract classes and implementations of data structures. * Understand subclassing mechanisms. * Understand overloading, overriding, dynamic binding, boxing and unboxing in OOP languages.

  2. Mathematical context * Big-Oh notation, worst-case run time complexity and storage complexity of algorithms. * Be able to do performance analysis of code using big-Oh.

  3. Data structures * Know and be able to use and implement abstract data types such as stacks, ArrayList, vectors, queues, linked lists, hash tables, and hash sets. * Understand the time complexities of operations such as insert, delete, add, retrieve, on the above data structures and be able to obtain time complexities of other operations on similar, simple data structures. * Knowledge of hash functions, trees, graphs, and two-dimensional arrays. * Knowledge of algorithms for problems including searching, and sorting (Quicksort, Mergesort, Heapsort, etc.), string manipulations.

  4. Core programming language concepts * Knowledge of programming language storage paradigms such as static, stack, and heap. * Be able to understand and use recursion in various problems.

Further Information

Graduate Handbook

The Graduate Handbook is a separate document which has administrative and admissions information for the graduate program.

Content in the handbook should be looked over regularly for changes and new information.

Applicant Specific Information

Applicants should note the Graduate Handbook sections for Prospective students and Teaching Assistantships and Financial Aid

Enrolled Student Specific Information

Once you are enrolled, the section for ongoing reference will be Regulations and Procedures.

Time Requirements

Normally it takes 16 months for full-time students to earn a M.S. in Computer Science, M.S. in Information Technology, or M.S. in Software Engineering from Loyola.

Though rarely an issue, there is a five-year overall time limit, and this period may be extended only by special action of the Dean of the Graduate School.

Warning

The M.S. in Computer Science may need extra time if the Thesis Option is chosen. Students who attend part-time normally take 2-3 years.

Pursuing Multiple M.S. Degrees

We are often asked about whether it is possible to complete more than one M.S. degree (e.g. an M.S. in Computer Science and an M.S. in Software Engineering). The answer is no unless you complete 60 hours of study. 30 hours of courses for each degree.

It is impractical and expensive, and we don’t think it serves students well. Our goal is to prepare you for a serious career (professional and/or academic) after completing one graduate degree.

Non-Degree and Continuing Education Students

Students who wish to continue taking courses may do so after completing their degree as non-degree students. We also encourage our students to maintain connections through our professional and social networking groups. Many of our students continue to be involved in research laboratories such as the Emerging Technologies Laboratory (see http://www.etl.luc.edu).