Experience
Education
Basic concepts, principles, methods, techniques, and practices of software engineering. All aspects of the software engineering field, including the use of Computer-Aided Software Engineering (CASE) tools.
Algorithm design using classical patterns such as exhaustive search, divide and conquer, randomization, hashing, reduction, dynamic programming, and the greedy method. Includes asymptotic and experimental efficiency analysis, NP-completeness, and decidability.
Concepts and architecture of interactive web applications, including markup, stylesheets, behavior, and client-side technologies for asynchronous events.
Design and architecture of large-scale web applications. Techniques for scalability, session management and load balancing. Dependency injection, application tiers, message queues, web services and REST architecture. Caching and eventual consistency. Data models, partitioning and replication in relational and non-relational databases.
Designing and programming mobile applications with emphasis on user interface, data management, and networking for mobile devices.
Concepts and design principles of operating systems, including process management, memory management, file systems, and security.
Fundamental theories and design of database systems, including SQL, ER model, relational model, index structures, and hashing.
Basic concepts of programming languages and principles of translation, including history, paradigms, design issues, and compiler design.
Organization and architecture of computer systems, including processors, memory hierarchies, and input/output mechanisms.
Principles and practices of game design and production, including game mechanics, storytelling, and production pipelines.
Fundamental concepts of computer security, including cryptographic techniques, authentication, access control, and security protocols.
Using computers to simulate human intelligence. Production systems, pattern recognition, problem solving, searching game trees, knowledge representation and logical reasoning. Programming in AI environments.