/intermediateProgramming

:thinking: Intermediate programming: Algorithms, physics simulation, web development using Rails

Primary LanguageJavaThe UnlicenseUnlicense

intermediateProgramming

Repository where I commit the EP's (Programming Exercises) I'm doing in second year in the Computer Science course in IME-USP. Sometimes I add some random exercises in different programming languages... Feel free to check them out.

Here's an overview of each discipline:

  • MAC0323 - Algorithms and Data Structures II

    You can check the implemented algorithms/data structures in the mac0323 README.md!

    Abstract data types and their implementations. Time and space complexity analysis (worst case, average case, amortized analysis, empirical estimates). Symbol tables: balanced search trees, hash tables, ternary search tries. Graphs: depth-first search, breadth-first search, shortest paths (Dijkstra's algorithm), topological sort, strong components. Text processing: regular expressions and automata, pattern matching (KMP algorithm, Rabin-Karp algorithm), data compression (Huffman codes), suffix arrays. Optional topics: B trees, LZW algorithm for text compression, memory management (garbage collection).

  • MAC0209 - Modelling and Simulation

    Scientific Methodology (experiments, measurements, laws, corroboration, falsifiability); Physical systems and their relation to the "laws of physics"; Modeling, simulation and analysis of physical systems; Technological applications. Application of concepts in topics of classical mechanics, such as kinematics and dynamics of punctual objects, rigid body and particle systems, simple harmonic motion and wave mechanics. The impact of measurement technology (e.g., biology's approach to engineering) and computers in modern science (i.e., its role in the discovery of knowledge). Other models: discrete and stochastic models (simulation of tissues of animal bodies by cellular automata, noise in physical systems, random walk, etc.)

  • MAC0218 - Programming Techniques II

    Control of versions such as git and good methodological practices for software development in a collaborative way. Object-oriented principles: encapsulation, inheritance, polymorphism, interfaces, handling of exceptions. Object-oriented frameworks for building complex graphical interfaces. Introduction to OO and MVC design patterns. Advanced software testing techniques including test automation frameworks and good coding practices. Code Quality and Refactoring.