# Courses

**Portal FACOM**

Published: 10/05/2019 - 09:40

Last modification: 06/06/2019 - 14:54

__Computer Science Undergraduate Program Courses:__

**1st PERIOD:**

**GBC011 - Entrepreneurship and Informatics: **Introduction to entrepreneurship: origins, importance, characteristics, types of entrepreneur; Innovation, creativity, ideas and opportunities: concepts, differences and inter-relations; Identification of opportunities; Business plan: concepts, objectives, elements; Operational aspects of a business.

**GBC012 – Calculus 1:** One variable real function; Limits and continuity; Derivatives; Indefinite integrals; Definite integrals.

**GBC013 - Analytic Geometry and Linear Algebra:** Analytical geometry in the plane: free vectors; coordinate systems; vectors in the plane; straight line and circumference; change of coordinated axes; polar coordinates. Analytical geometry in space: coordinate system; vectors in space; straight lines and planes; quadrics; cylindrical surfaces and rotating surfaces around the Cartesian axes. Matrices and linear systems; Vector spaces; Linear transformations; Eigenvalues and eigenvectors of square matrices and of Linear operators, Internal products.

**GBC014 – Procedural Programming:** Reasoning about programming; Algorithms; Solving problems by algorithms; Basic data types, variables and constants; Instructions (input/output, value assignments, conditional, loop); Arrays (Vectors, Matrices); Complex data types (composition of basic data types); Disk files. Functions (primitives and user-written).

**GBC015 – Introduction to Computer Science:** Definition and history of computer science; History of hardware; Introduction to Computability; Panoramic view of Computing and Informatics; Education of Ethnic-Racial Relations; Histories and Cultures of Afro-Brazilian people, African people and Indigenous people; Digital Inclusion as a form of Social Inclusion and decrease of the differences between different cultures and races.

**GBC016 – Logic in Computer Science:** Propositional Logic: language, semantics and semantic properties, methods for determining the validity of formulas, axiomatic system, semantic tableaux and resolution. Logic of predicates: language, semantics, semantic properties, methods for determining the validity of formulas and logic programming.

**2nd PERIOD:**

**GBC021 - Computer Science Profession:** Professional positions in Informatics; Professional behavior: computer ethics, professional ethics codes, cases of computer ethics; IT professional responsibilities: security, intellectual property, ethics over Internet; Technology impact on society; Environmental education and green computing.

**GBC022 - Calculus 2: ** Multiple variables real functions; Partial derivatives; Multiple integrals; Numerical series and Power series.

**GBC023 - Mathematics for Computer Science:** Induction and Recursion; Set Theory: sets, cardinality, function, relation, order and lattices; Theory of Numbers: great common divisor, prime numbers, modularity; Combinatorics: permutation, combination, recurrence; Asymptotic behavior.

**GBC024 - Algorithms and Data Structures 1:** Dynamic allocation of memory; Dynamic structures: stacks, queues, linked lists; Abstract data types.

**GBC025 - Logical Programming: **Propositional logic resolution; Logic of first order; Declarative programming paradigm; facts rules, recursion, control structures, operators; Case studies.

**GBC026 - Digital Systems: **Numerical systems: representations, operations; Binary numbers: fixed point, floating point; Codes for non-numeric data; Introduction to error detection and error correction; Algebra for logical variables; Logical ports; Logical circuits; Simplification of logical functions; Combinational circuits: latches, flip-flops; registers; Sequential machines; Synchronous sequential circuits; Simplification of sequential machines; Asynchronous sequential circuits.

**3rd PERIOD:**

**GBC041 – Statistics: **Basic concepts of statistics; Statistical method phases; Data organization; Measures: central tendency and position; Measures of dispersion; Probability theory; Data dependency and data independence; Random variables; Random variables distribution models; Approximations and adjustments for theoretical distributions; Confidence intervals; parametric hypothesis tests.

**GBC032 - Calculus 3: **Ordinary differential equations of first order; Linear ordinary differential equations of second order; Laplace transform; Fourier series; Fourier integrals.

**GBC033 - Functional Programming:** The functional paradigm: object types, functional expressions, operators and functions, functional polymorphism, tuples, lists, algebraic data types, type classes, high order functions; Program evaluation forms; Infinite lists; Input and output functions; Program debugging; Program modularization.

**GBC034 - Algorithms and Data Structures 2:** Recursion; Dynamic programming; Principles of Algorithm analysis: empirical analysis, mathematical analysis, asymptotic analysis, O-notation; Sort algorithms; Graphs; Trees; Search: binary search tree (BST), Balanced BST, hashing.

**GBC035 – Object-Oriented Programming 1: **Fundamental concepts of object-oriented programming: classes, objects, encapsulation, inheritance, polymorphism; Class components: constructors, destructors, variables, methods; Object-oriented programming language; Development of applications using object-oriented programming.

**GBC036 - Architecture and Organization of Computers 1:** Digital Computers: history and evolution; Levels of virtual machines; Structured Organization of Computers; Von Neumman Architecture: control unit, logic and arithmetic unit, main memory, I/O units; Microarchitecture level; Instruction set architecture; Machine language (Assembly) programming.

**4th PERIOD**

**FAMAT31041 - Computational Statistics: **Statistical softwares; Estimative methods; Experimental design; Multiple linear regression analysis; Nature of multivariate data; Main component analysis; Cluster analysis.

**GBC042 – Graph Theory: **Oriented and non-oriented graphs; Representations of graph (geometric and matrix); Isomorphism and planarity of graphs; Subgraphs; Trees and spanning trees; Connectivity; Eulerian tours and Hamiltonian cycles; Pairing; Independent sets and clicks; Vertex coloring and Edge coloring; Network flows.

**GBC043 - Database Systems:** Architecture of a database system; Entity Relationship model; Relational model; Data definition language; Data manipulation language; Database Project (functional dependency, keys, normalization, visions); Transactions, concurrency control, recovery from failure; Object-oriented database model; Distributed database; Implementation of application using a database management system (DDL, DML, procedural language on the database server, SQL language embedded in programming languages); Communication between application ("front-end") and the DBMS.

**GBC044 - Formal Languages and Automata:** Languages, grammars and parsers; Hierarchy of Chomsky (regular languages, context-free languages, context-sensitive languages; recursively enumerable languages); Finite automata; Stack automata; Linearly restricted automata; Turing machine; Church-Turing thesis; Undecidable problems and the limits of conventional computing.

**GBC045 – Operating Systems:** Structure and architecture of operating systems; Processes and threads; Process (communication, competition, synchronization); Memory management; Input/Output system; File system; Distributed operating systems.

**GBC046 - Architecture and Organization of Computers 2:** Abstractions and computational technologies; Computer instruction set; Computer Architecture Performance Evaluation; MIPS (architecture, computer arithmetic, processor (data path and control pipeline; superscalar)); Low level consumption energy architectures.

**5th PERIOD**

**GBC051 - Scientific Computing and Optimization: **Error analysis; Theory of approximation (interpolation and curve approximation); Non-linear equations; Linear systems; Non-linear systems; Numerical integration; Ordinary differential equations; Partial differential equations; Numeric optimization; Linear programming; Gradient-based methods.

**GBC052 – Analysis of Algorithm:** Asymptotic analysis (asymptotic notations Ο, Ω and θ); Solution of sums and recurrences; Performance analysis of iterative algorithms; Performance analysis of recursive algorithms; Worst-case analysis and probabilistic analysis (middle case); Search and sorting algorithms; Dynamic programming; Greedy algorithms; Graph algorithms; Approximate Algorithms.

**GBC053 - Database Management:** Architecture of a Database Management System (DBMS); File organization (data and index files); Data storage (devices and management); Disk indexing structures (B-tree + and Hash); Sorting files on disk; Implementation of relational operators; Implementation of DBMSs (data types, data storage, data description language processing; data manipulation language (insert, change, delete, query) processing).

**GBC054 - Software Modeling:** Software modeling problems (diversity of artifacts, models diversity, semantic gap between requirements and implementation); Development processes; Modeling languages (UML, Structured diagrams, formal notations (algebraic, logical, operational)); Implementation Paradigms (Procedural, Object-oriented, Aspects-oriented; Features-oriented); Modeling with UML (Use Cases, Activities, Classes, Sequence, Collaboration, Competition, States, Components and Deployment).

**GBC055 – Object-Oriented Programming 2: **Advanced concepts about object-oriented programming (polymorphism, and dynamic linking); Software reuse (frameworks and components); Design/Architecture patterns (bad smells, and software refactoring); Advanced APIs (graphical interfaces, concurrency, and distribution).

**GBC056 - Computer Network Architectures: **Layered design concepts; Elements of a network protocol; Philosophical aspects of distributed communications; Open Systems Interconnection (OSI - philosophical and architectural aspects); OSI layers (physics; logical link; network; transport; session; presentation; and application).

**6th PERIOD**

**GBC061 - Business Management: **Evolution of administrative protocols in organizational environment; Business administration and business planning; Management and enterprises; Control and Information technology in enterprises.

**GBC062 - Theory of Computation: **Automata and languages (a review); Computability (Church-Turing Thesis, decidability, reducibility); Complexity of problems (time and space); Intractability.

**GBC063 - Artificial Intelligence:** Introduction to artificial intelligence; Solving problems (searching, information retrieval); Knowledge representation; Reasoning; Learning; Advanced topics.

**GBC064 - Software Engineering: **Introduction to software engineering; Requirements (requirement engineering, requirement management tools, traceability.); Metrics; Software development process management; User Interface Design; Software testing; Software quality; Software documentation; Requirement models; Software architecture description languages; Design and architecture patterns; Frameworks and software components; Component Technology; Metamodels (OCL, MDA, BPEL4WS); Models of Analysis. Patterns of Analysis.

**GBC065 - Modeling and Simulation: **Markov chains; Poisson process; Birth and death process; Branching process; Random numbers generation; Random tests; Queueing theory (special types of queues); Simulation under computer.

**GBC066 - TCP/IP Networks Architecture:** TCP/IP architecture: layered organization (subnet, network, transport, application); Access to subnet (services and main protocols (ARP, RARP)); IP protocol (PDU format, MEF/FSM protocol, addressing (classful, subnetting, VLSM, CIDR), protocol analysis case study); IP routing (static and dynamic, routing protocols (RIP, OSPF, BGP, ...), layer protocols (ICMP, IGMP, ...), protocol analysis case study); UDP protocol (PDU format, MEF/FSM protocol, addressing, IP interface, protocol analysis case study); TCP protocol (PDU format, MEF/FSM protocol, addressing, UDP interface, protocol analysis case study); Application Protocols (DNS, HTTP, DHCP, others, PDUs formats, MEFs/FSMs, addresses, interfaces with TCP, protocol analysis case study); Other case studies (connectivity problems, traffic characterization, routing, service differentiation applications, etc).

**7th PERIOD**

**GBC071 - Construction of Compilers:** Grammars; Automata; Lexical analysis; Syntax analysis; Code Generation; Error recovery; Meta-compilers.

**GBC072 - Undergraduate Project 1: **Scientific research protocol; Research planning (theme, statement of the problem, objectives and justifications); Writing the research text (hypotheses, theoretical references, quotations, article, monography); Execution of the research plan (specification of a problem and a computational solution under scientific methodology).

**GBC073 - Computational Intelligence:** Artificial neural networks (perceptron, multiple layers, Hopfield, Kohonen); Evolutionary computing (genetic algorithms, genetic programming, Classifying Systems); Fuzzy systems; Applications of paradigms such as interpolation, optimization, classification and control; Other bio-inspired paradigms.

**GBC074 – Distributed Systems:** Motivation to distributed systems; Distributed systems models; Communication between distributed processes; Global consistency; Distributed shared memory; Distributed file systems; Name/Directory server; Distributed Transactions.

**8th PERIOD**

**GBC081 - Law and Legislation: **Structure of the State; Power of the State; Fundamental rights; Telematic contracts - Consumer Protection Code; General notions of copyright; Software law; Internet law; Cybercrimes.

**GBC082 - Undergraduate Project 2: **Elaboration of a monography (also known as Graduation Conclusion Work) about a Computer Science problem (preferably the one stated in GBC072) under the advising of a teacher.

**GBC083 - Information Security: **History of cryptography; Symmetrical and asymmetric cryptography; Relevant symmetric and asymmetric algorithms for encryption; Relevant algorithms for cryptographic hashing; Relevant algorithms for digital signatures; Protocols for key exchange; Protocols for distributed systems authentication ( IPSec, SSL and TLS); Information security (contingency planning and business endurance, security policies and procedures); Systems and software certification; Security in software; Computer operation security; Security over network and over telecommunications.

**GBC084 - Internet Programming: **History of the Internet; Multimedia systems; Trend analysis; Web software development (languages (such as JSP) and tools, graphic design, graphic animation, case-study); Dynamic Web programming; Multi-layer software for Web; Web software architecture (client-server); Distributed objects over the Internet; Database connection on Internet.