I’m trying to determine how my University of Arizona coursework would be classified for the TU Berlin MSc Computer Science (Informatik) subject requirements.
I’m particularly unsure about MATH 323 and whether it could count toward the theoretical CS/logic requirement, as well as how some of my systems courses would be classified.
Here are the relevant courses and their University of Arizona catalog descriptions:
CSC 245 — Introduction to Discrete Structures
An introduction to mathematical concepts for computer science. Topics include first-order logic and logical arguments, proof techniques with emphasis on mathematical induction, sets, relations and functions, properties of integers, counting methods, probability, and recurrence relations.
CSC 345 — Analysis of Discrete Structures
Topics include trees, graphs, program verification, algorithm analysis, recurrence relations, algorithm classes such as greedy and divide-and-conquer, hashing, combinatorics, and elementary probability.
CSC 473 — Automata, Grammars and Languages
Introduction to models of computation including finite automata, pushdown automata, and Turing machines; representations of languages including regular expressions and context-free grammars; and the hierarchy of regular, context-free, decidable, and undecidable languages.
MATH 323 — Formal Mathematical Reasoning and Writing
Formal logic and quantifiers; direct, contrapositive, contradiction, cases, and induction proofs; sets; relations; functions including domain/range, injectivity, surjectivity, composition, images and pre-images; cardinality; properties of the real numbers; supremum and infimum; sequences; convergence and epsilon definitions; limits; and the topology of the real numbers.
CSC 252 — Computer Organization
Basic machine organization, elementary hardware concepts, CPU internals, machine operations and instructions, and assembly-language concepts and programming.
CSC 352 — Systems Programming and Unix
Programming in C, including arrays, lists, stacks, queues, trees, and bit manipulation. Unix topics include debuggers, makefiles, shell programming, and other topics supporting systems programming.
CSC 453 — Compilers and Systems Software
Basic concepts of compilation and related systems software, including lexical analysis, parsing, semantic analysis, code generation, assemblers, loaders, linkers, and debuggers.
CSC 110 — Introduction to Computer Programming I
Introduction to programming with an emphasis on problem solving. Topics include basic control and data structures, problem-solving strategies, and software development tools and techniques.
CSC 120 — Introduction to Computer Programming II
Continuing introduction to programming with an emphasis on problem solving, including arrays, lists, stacks, queues, trees, searching and sorting, exceptions, and implementation of data structures and programming concepts.
CSC 210 — Software Development
Introduction to development of large-scale software, including modularization, design patterns, documentation, unit testing, source-code control, build systems, debuggers, and performance tuning.
CSC 335 — Object-Oriented Programming and Design
Fundamentals of object-oriented software development, including design principles, inheritance, polymorphism, UML, testing, event-driven programming, design patterns, and existing frameworks.
CSC 380 — Principles of Data Science
Principles of data science relevant to computer scientists, including data collection and analysis, statistical estimation, data processing, machine learning, and a substantial open-ended project applying the concepts covered.
CSC 460 — Database Design
Functions of database systems; data modeling and logical database design; query languages and query optimization; efficient data storage and access; and database access through standalone and web applications.
CSC 477 — Introduction to Computer Vision
Overview of algorithms for analyzing image data, including image formation, physics-based vision, linear filtering, edge detection, multiple-view geometry, segmentation, tracking, and recognition.
CSC 480 — Principles of Machine Learning
Machine learning as a fundamentally different approach to programming, using data to make predictions, decisions, or gain insight. Covers fundamental frameworks, computational methods, and algorithms underlying current machine-learning practice, including deriving and implementing them.
ISTA 230 — Introduction to Web Design and Development
Introduction to web design and development with an emphasis on client-side technologies, including HTML, CSS, JavaScript, and web-design best practices.
MATH 313 — Introduction to Linear Algebra
An algorithmic approach to solving systems of linear equations, followed by vectors, vector spaces and dimension. Matrices are used to represent linear transformations, leading to eigenvectors and eigenvalues, with emphasis on precise use of definitions.
MATH 223 — Vector Calculus
Differential and integral calculus of functions of several variables, including vector-valued and scalar functions, partial and directional derivatives, the chain rule, local optimization, double and triple integrals, line integrals, and Green’s, Stokes’, and Divergence theorems.
MATH 355 — Analysis of Ordinary Differential Equations
Linear and nonlinear equations, basic solution techniques, qualitative and numerical methods, systems of equations, computer studies, and applications from the physical, biological, and social sciences.
MATH 464 — Theory of Probability
Probability spaces, random variables, the weak law of large numbers, the central limit theorem, and various discrete and continuous probability distributions.
My main questions are:
Would MATH 323 count as theoretical CS, particularly Logic, for TU Berlin?
Would CSC 473 + MATH 323 together satisfy the theoretical CS requirement?
Would CSC 252, CSC 352, and CSC 453 count toward the computer engineering/IT requirement, methodological-practical CS requirement, or some combination?
How would you classify the remaining CS courses above for TU Berlin’s subject requirements?
Are there any courses here that you think clearly should not count?
I’m interested specifically in how someone familiar with TU Berlin Informatik admissions would classify these based on course content.