File size: 15,784 Bytes
9e13486
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
def get_class_requirements(major: str, specialization: str) -> str:
    # Convert inputs to lowercase for comparison
    major = major.lower()
    specialization = specialization.lower()

    # Check if the major is valid
    valid_majors = {"cs", "computer science", "comp sci"}
    if major not in valid_majors:
        return f"No class requirements found for major {major}"

    # Define specializations and their requirements
    specializations = {
        "computational perception and robotics": """

        Pick one (1) of:

        CS 6505 Computability, Algorithms, and Complexity

        CS 6515 Introduction to Graduate Algorithms

        CS 6520 Computational Complexity Theory

        CS 6550 Design and Analysis of Algorithms

        CS 7520 Approximation Algorithms

        CS 7530 Randomized Algorithms

        CSE 6140 Computational Science and Engineering Algorithms

        And pick one of:

        CS 6601 Artificial Intelligence

        CS 7641 Machine Learning

        And pick three (3) courses from Perception and Robotics, with at least one course from each.

        Perception Classes:

        CS 6475 Computational Photography

        CS 6476 Computer Vision

        CS 7499 3D Reconstruction

        CS 7636 Computational Perception

        CS 7639 Cyber Physical Design and Analysis

        CS 7644 Machine Learning for Robotics

        CS 7650 Natural Language

        Robotics Classes:

        CS 7630 Autonomous Robotics

        CS 7631 Autonomous Multi-Robot Systems

        CS 7633 Human-Robot Interaction

        CS 7638 Artificial Intelligence Techniques for Robotics

        CS 7648 Interactive Robot Learning

        CS 7649 Robot Intelligence: Planning

        """,
        "computer graphics": """

        Pick one (1) of:

        CS 6491 Foundations of Computer Graphics

        CS 6457 Video Game Design

        CS 7496 Computer Animation

        And pick one (1) of:

        CS 6505 Computability, Algorithms, and Complexity

        CS 6515 Introduction to Graduate Algorithms

        Electives (9 hours)

        And pick three (3) from:

        CS 6457 Video Game Design and Programming

        CS 6475 Computational Photography

        CS 6476 Computer Vision

        CS 6491 Foundations of Computer Graphics

        CS 6492 Shape Grammars

        CS 6730 Data Visualization Principles

        CS 7450 Information Visualization

        CS 7496 Computer Animation

        """,
        "computing systems": """

        Pick one (1) of:

        CS 6505 Computability, Algorithms, and Complexity

        CS 6515 Introduction to Graduate Algorithms

        And pick two (2) of:

        CS 6210 Advanced Operating Systems

        CS 6241 Compiler Design

        CS 6250 Computer Networks

        CS 6290 High-Performance Computer Architecture

        CS 6300 Software Development Process OR CS 6301 Advanced Topics in Software Engineering

        CS 6390 Programming Languages

        CS 6400 Database Systems Concepts and Designs

        Any Core Courses in excess of the 9 hour requirement may be used as Computing Systems Electives

        And pick three (3) courses from:

        CS 6035 Introduction to Information Security

        CS 6200 Graduate Introduction to Operating Systems

        CS 6220 Big Data Systems and Analytics

        CS 6235 Real Time Systems

        CS 6238 Secure Computer Systems

        CS 6260 Applied Cryptography

        CS 6262 Network Security

        CS 6263 Intro to Cyber Physical Systems Security

        CS 6291 Embedded Software Optimization

        CS 6310 Software Architecture and Design

        CS 6340 Software Analysis and Testing

        CS 6365 Introduction to Enterprise Computing

        CS 6422 Database System Implementation

        CS 6550 Design and Analysis of Algorithms

        CS 6675 Advanced Internet Computing Systems and Applications

        CS 7210 Distributed Computing

        CS 7260 Internetworking Architectures and Protocols

        CS 7270 Networked Applications and Services

        CS 7280 Network Science

        CS 7290 Advanced Topics in Microarchitecture

        CS 7292 Reliability and Security in Computer Architecture

        CS 7560 Theory of Cryptography

        CS 8803 FPL Special Topics: Foundations of Programming Languages

        CSE 6220 High Performance Computing

        """,
        "high performance computing": """

        Must Take:

        CSE 6140 Computational Science and Engineering Algorithms

        CSE 6220 High Performance Computing



        And pick three (3) from:

        CSE 6221 Multicore Computing: Concurrency and Parallelism on the Desktop

        CS/CSE 6230 High-Performance Parallel Computing: Tools and Applications

        CS 6241 Compiler Design

        CS 6290 High-Performance Computer Architecture

        CS/CSE 8803 Special Topics: Parallel Numerical Algorithms

        CSE 6236 Parallel and Distributed Simulation

        CSE 8803 Special Topics: Hot Topics in Parallel Computing

        """,
        "Human Centered Computing": """

        Must Take:

        CS 6451 Intro to HCC

        CS 6452 Prototyping Interactive Systems

        CS 7455 Issues in HCC



        And pick two (2) from:

        CS 6455 User Interface Design and Evaluation

        CS 6456 User Interface Software

        CS 6460 Educational Technology: Conceptual Foundations

        CS 6465 Computational Journalism

        CS 6470 Design of Online Communities

        CS 6471 Computational Social Science

        CS 6474 Social Computing

        CS 6476 Computer Vision

        CS 6601 Artificial Intelligence

        CS 6730 Data Visualization: Principles & Applications

        CS 6750 Human-Computer Interaction

        CS 6795 Introduction to Cognitive Science

        CS 7450 Information Visualization

        CS 7451 Human-Centered Data Analysis

        CS 7460 Collaborative Computing

        CS 7470 Mobile and Ubiquitous Computing

        CS 7476 Advanced Computer Vision

        CS 7610 Modeling and Design

        CS 7632 Game AI

        CS 7633 Human Robot Interaction

        CS 7637 Knowledge-Based AI

        CS 7620 Case-based Reasoning

        CS 7641 Machine Learning

        CS 7650 Natural Language

        CS 7695 Philosophy of Cognition

        CS 7697 Cognitive Models of Science and Technology

        CS 7790 Cognitive Modeling

        CS 8803 Computational Creativity

        CS 8803 Expressive AI

        CS 8803 Computers, Communications & International Development

        """,
        "human-computer interaction": """

        Must Take:

        CS 6456 Principles of User Interface Software OR CS 7470 Mobile and Ubiquitous Computing

        CS 6750 Human-Computer Interaction



        And pick three (3) courses from the two sub-areas below, including at least one from each sub-area:



        Sub-area: Design and evaluation concepts

        CS 6010 Principles of Design

        CS 6320 Software Requirements Analysis and Specification

        CS 6435 Digital Health Equity

        CS 6455 User Interface Design and Evaluation

        CS 6457 Video Game Design

        CS 6460 Educational Technology: Conceptual Foundations

        CS 6465 Computational Journalism

        CS 6470 Design of Online Communities

        CS 6795 Introduction to Cognitive Science

        CS 7465 Educational Technology: Design and Evaluation

        CS 7467 Computer-Supported Collaborative Learning

        CS 7790 Cognitive Modeling



        Sub-area: Interactive technology

        CS 6440 Introduction to Health Informatics

        CS 6730 Data Visualization: Principles & Applications

        CS 6763 Design of Design Environments

        CS 6770 Mixed Reality Experience Design

        CS 7450 Information Visualization

        CS 7451 Human-Centered Data Analysis

        CS 7460 Collaborative Computing

        CS 7470 Mobile and Ubiquitous Computing

        CS 7632 Game AI

        """,
        "interactive intelligence": """

        Take one (1) course from:

        CS 6300 Software Development Process

        CS 6301 Advanced Topics in Software Engineering

        CS 6505 Computability, Algorithms, and Complexity

        CS 6515 Introduction to Graduate Algorithms

        CSE 6140  Computational Science and Engineering Algorithms



        And, two (2) courses from:​

        CS 6601 Artificial Intelligence

        CS 7637 Knowledge-Based AI

        CS 7641 Machine Learning



        And pick two (2) courses from:

        CS 6440 Introduction to Health Informatics

        CS 6460 Educational Technology: Conceptual Foundations

        CS 6465 Computational Journalism

        CS 6471 Computational Social Science

        CS 6603 AI, Ethics, and Society

        CS 6750 Human-Computer Interaction 

        CS 6476 Computer Vision

        CS 7631 Multi-Robot Systems

        CS 7632 Game AI

        CS 7633 Human-Robot Interaction

        CS 7634 AI Storytelling in Virtual Worlds

        CS 7643 Deep Learning

        CS 7647 Machine Learning with Limited Supervision

        CS 7650 Natural Language

        CS 8803 Special Topics: Advanced Game AI

        CS 6795 Introduction to Cognitive Science

        CS 7610 Modeling and Design

        CS 7651 Human and Machine Learning

        CS 8803 Special Topics: Computational Creativity

        """,
        "machine learning": """

        Pick one (1) of:

        CS 6505 Computability, Algorithms, and Complexity

        CS 6515 Introduction to Graduate Algorithms

        CS 6520 Computational Complexity Theory

        CS 6550 Design and Analysis of Algorithms

        CS 7510 Graph Algorithms

        CS 7520 Approximation Algorithms

        CS 7530 Randomized Algorithms

        CSE 6140 Computational Science and Engineering Algorithms



        And, pick one (1) of:

        CS 7641 Machine Learning

        CSE 6740 Computational Data Analysis: Learning, Mining, and Computation



        And pick three (3) of:

        CS 6220 Big Data Systems & Analysis

        CS 6476 Computer Vision 

        CS 6603 AI, Ethics, and Society

        CS 7280 Network Science

        CS 7535 Markov Chain Monte Carlo

        CS 7540 Spectral Algorithms

        CS 7545 Machine Learning Theory

        CS 7616 Pattern Recognition

        CS 7626 Behavioral Imaging 

        CS 7642 Reinforcement Learning and Decision Making

        CS 7643 Deep Learning 

        CS 7644 Machine Learning for Robotics

        CS 7646 Machine Learning for Trading

        CS 7650 Natural Language

        CS 8803 Special Topics: Probabilistic Graph Models

        CSE 6240 Web Search and Text Mining

        CSE 6242 Data and Visual Analytics

        CSE 6250 Big Data for Health

        ISYE 6416 Computational Statistics

        ISYE 6420 Bayesian Methods

        ISYE 6664 Stochastic Optimization

        Approved Substitutions: https://www.cc.gatech.edu/approved-substitutions-specialization-machine-learning-electives

        """,
        "modeling and simulations": """

        Must Take:

        CSE 6730 Modeling and Simulation: Foundations and Implementation



        And pick one (1) of

        CSE 6220 High Performance Computing

        ISYE 6644 Simulation

        MATH 6640 Introduction to Numerical Methods for Partial Differential Equations



        And pick three (3) of:

        CSE 6220 High Performance Computing 

        CSE 6236 Parallel and Distributed Simulation

        CSE/CHEM 8803 Special Topics: Quantum Information, Computation, and Simulation

        CS 7280 Network Science

        INTA 6742 Modeling, Simulation and Military Gaming

        ISYE 6644 Simulation

        MATH 6640 Introduction to Numerical Methods for Partial Differential Equations

        """,
        "scientific computing": """

        Must Take:

        CSE/MATH 6643 Numerical Linear Algebra



        And pick one (1) of:

        CSE/MATH 6644 Iterative Methods for Systems of Equations

        MATH 6640 Introduction to Numerical Methods for Partial Differential Equations



        And pick three (3) of:

        CS/CSE 6230 High-Performance Parallel Computing: Tools and Applications

        CS/CSE 8803 Special Topics: Parallel Numerical Algorithms

        CSE 6140 Computational Science and Engineering Algorithms

        CSE 6220 High Performance Computing

        CSE/MATH 6644 Iterative Methods for Systems of Equations

        CSE 8803 Special Topics: Algorithms for Medical Imaging and Inverse Problems

        CSE 8803/CHEM 6485 Computational Chemistry

        MATH 6640 Introduction to Numerical Methods for Partial Differential Equations

        """,
        "social computing": """

        Pick two (2) of:

        CS 6470 Design of Online Communities

        CS 6474 Social Computing

        CS 6471 Computational Social Science



        And pick three (3) more classes including additional classes from the above and:

        CS 6238 Secure Computer Systems

        CS 6250 Computer Networks

        CS 6456 Principles of User Interface Software

        CS 6465 Computational Journalism

        CS 6505 Computability, Algorithms, and Complexity

        CS 6515 Introduction to Graduate Algorithms 

        CS 6675 Advanced Internet Computing Systems and Applications

        CS 6730 Data Visualization: Principles & Applications

        CS 6750 Human-Computer Interaction

        CS 7210 Distributed Computing

        CS 7270 Networked Applications and Services

        CS 7280 Network Science

        CS 7450 Information Visualization

        CS 7451 Human-Centered Data Analysis

        CS 7467 Computer-Supported Collaborative Learning

        CS 7650 Natural Language



        Specialization: Visual Analytics

        Must Take:

        CS 6730 Data Visualization: Principles & Applications

        CS 7450 Information Visualization

        CSE 6242 Data and Visual Analytics



        And pick two (2) from:

        CS 6456 Principles of User Interface Software

        CS 6465 Computational Journalism

        CS 6491 Computer Graphics

        CS 6750 Human-Computer Interaction

        CS 6795 Introduction to Cognitive Science

        CS 7451 Human-Centered Data Analysis

        CS 7641 Machine Learning

        CSE 6740 Computational Data Analysis

        """
    }

    # Define mappings for shortened specialization names
    specialization_aliases = {
        "computational perception and robotics": {"computational perception and robotics", "cpr"},
        "computer graphics": {"computer graphics", "cg"},
        "computing systems": {"computing systems", "csys", "comp sys"},
        "high performance computing": {"high performance computing", "hpc"},
        "human centered computing": {"human centered computing", "hcc"},
        "human-computer interaction": {"human-computer interaction", "hci"},
        "interactive intelligence": {"interactive intelligence", "ii"},
        "machine learning": {"machine learning", "ml"},
        "modeling and simulations": {"modeling and simulations", "ms"},
        "scientific computing": {"scientific computing", "sc", "scico"},
        "social computing": {"social computing", "soc", "soco"}
    }

    # Find the matching specialization
    for spec_name, aliases in specialization_aliases.items():
        if specialization in aliases:
            return specializations[spec_name]

    return "Specialization not found in available MSCS Specializations"


if __name__ == '__main__':
    major = "Computer Science"
    specialization = "ml"
    requirements = get_class_requirements(major, specialization)
    print(requirements)
    print()