Projects related to my graduation in Computer Science from the Federal University of Pelotas
- Clone the repository to your local machine using the following command:
git clone https://github.com/HuberM1998/UFPel.git - Navigate to the desired project folder based on your academic course or area of interest.
- Each project folder contains specific instructions on how to run or use the project. Refer to the respective project's README or documentation for detailed information.
- Explore the flowcharts in the repository to get an overview of the course structure and project relationships.
- Fork the repository by clicking the "Fork" button on the top right of the repository page. This creates a copy of the repository in your GitHub account.
- Create a new branch for your contribution:
git checkout -b feature/your-feature-name - Make your changes, add new features, or fix bugs.
- Commit your changes:
git add . git commit -m "Add your commit message here" - Push the changes to your forked repository:
git push origin feature/your-feature-name - Create a pull request by navigating to the original repository and clicking the "New Pull Request" button.
- Provide a detailed description of your changes in the pull request, and submit it.
Thank you for contributing! Your efforts help improve and enhance the projects related to the Computer Science graduation at the Federal University of Pelotas.
Compare the performance of programs using different compiler optimization options (-O2 and -O3), against compilation without using the optimization option. Running the programs, collecting the data, presenting the results in the form of tables and/or graphs. Research project on programming language concepts, addressing the theme: "Analysis of programming languages for solving the Gram-Schmidt process".
Meal delivery with concurrent schedule. Analogous to the producer-consumer problem, also known as the bounded-buffer problem, the employee being analogous to the producer, the deliveryman to the consumer, and the buffer to the bag. Research project in operating systems, with topic in: "Definitions and advanced topics of the distributed file system NFS (Network File System)".
Classification of architectures for parallel and distributed systems. Concurrent programming models. Shared memory. Exchange of Messages. Case studies. Fibonnaci, Merge Sort, Integral calculation, quick sort using a parallelized approach in CUDA, OpenMP and MPI.
Projects: Parallel Full Search (https://github.com/HuberM1998/Parallel-Fullsearch)
Solving computational problems. Variable manipulation. Development of algorithms using sequential, conditional and repetition flows. Use of Vectors and Matrices in the treatment of data sets, as well as records. Study of the concepts of subroutines and functions.
Complete study of a sequential programming language: structure of a program, types, structured types and pointers, declarations, commands, subprograms, input and output, algorithms with arrays, use of files. Dynamic allocation and linear data structures. Techniques and tools for program development. Coding style: code documentation, data declaration, statement construction.
Insertion Sort, Selection Sort, Merge Sort, Quick Sort, List, Stack, Priority Queues (heaps), Auto-balanced trees (AVL, Red-and-Black), Binary Lookup Trees.
Minimal Spanning Tree resulting from the execution of Kruskal Algorithms and Tries types.
Approximate algorithm to solve the traveling salesman problem (TSP)
numerical methods of bisection, false position, newton, secant, Gaussian elimination, Least Squares Method, Trapezoidal Method, Simpson's 1/3 Method, Simpson's 3/8 Method and Centered Difference Approximation
Game based on world of warcraft in rpg mode
Implementation of a hypothetical Z808 machine
ALU and Registrar Bank. ALU Testbench. Multipliers Project. Hadamard. Neander Project.
The Hardware/Software Interface. Machine language and mnemonic language. Set of instructions and addressing modes. Processor organization: operating block and block of control. Performance Measures. Pipeline organization. RISC and CISC machines
Implementation of a memory hierarchy targeting modern processors, specifically the intel iX processors. An example of a virtual memory and I/O. Experiments with data and instruction caching using Vortex 1.
Introduction to Digital Systems. MOS Technology: the MOS Transistor, Logic Gates. Boolean Algebra and Logic Circuits: functions, canonical representations, minimization, mapping, dynamic behavior; Arithmetic and Interconnection Combinational Circuits. Sequential Circuits: latches and flip-flops, registers and counters. Memory Blocks. Analysis of Synchronous Sequential Machines: Mealy and Moore models. Programmable Devices. Basics of VHDL.
Projects: ALU, Synchronous Counter
Concepts of representation and formation of images. Pixel operations. Convolution techniques and point-based operations. Histograms. Edge detectors. Filtering and enhancing digital images in the spatial domain. Filtering and enhancement of digital images in the frequency domain, Fourier transform. Morphological operations. Segmentation methods.
Projects: Leukocyte count
Line intersection algorithm (javascript). Image segmentation using a convex hull in microscope images, for counting, analyzing and classifying white blood cells in human blood (matlab).
Concepts related to programming languages and formal languages, particularly the construction and transformation of grammars, as well as definitions of syntax, semantics and execution environment.
Projects: Compiler and interpreter for the Karloff language
Perception of two principles of 3D digital graphic modeling with different engineering attributes. Implementation of a mesh editor, dinner and animation in WebGL and the game Space-Invaders.
Concepts, evolution and trends in integrated circuits. Integrated circuit design methodologies. Simulators and estimators. Algorithms for CAD. Electronic project automation. Electronic CAD tools. Implementation of the Quine-McCluskey Algorithm (QMC) and Maze Router (Lee).
Application layer. Transport layer. Network layer. Data link layer. Media access sublayer. Physical layer. Protocols case study. Cryptography concepts. Introduction to network security. Introduction to network management. Implementation of client and server architecture and p2p architecture.
Projects: Multiplayer chess game (https://github.com/HuberM1998/chess-socket)
Implementation of a Moore state machine. Informal and formal definition of a finite automaton with output, three mathematical examples and exemplification using a hardware description in VHDL.
Implementation of the database used to create Adopetme, an application for adopting animals.

