Forums
The tech forums are internally organised structured courses that we put together to cover a particular topic in-depth. They typically consist of 10-14 2-hour sessions which are spread over a couple of weeks.
THE FOLLOWING FORUMS AND RESPECTIVE TOPICS ARE CURRENTLY AVAILABLE:
.NET FORUMS
- .NET BASIC FUNDAMENTALS - A refresher on OOP, basic C# concepts and intro to .NET
- .NET ADVANCED FUNDAMENTALS - .NET Advanced Fundamentals Discussion of more complicated .NET concepts
- MEMORY MANAGEMENT AND PERFORMANCE TOOLS - How .NET manages memory, understanding and identifying typical memory issues and ways to combat/prevent them
- DATA ACCESS - Setup of the Data-access layer and management of object states and transactions
- LINQ - Deep dive into LINQ and concepts such as LINQ to Entities
- ASP.NET MVC/WEBAPI WEB APPLICATION - BASIC TOPICS - Basic discussion of the features of an ASP.NET Web Application
- ASP.NET MVC/WEBAPI WEB APPLICATION - ADVANCED TOPICS - Further discussion of the features of an ASP.NET Web Application, building on the concepts discussed in web application basics
- ASP.NET MVC/WEBAPI WEB APPLICATION SECURITY - Mainly focusing on Security and Filters for authorisation, logging, etc.
- WINDOWS SERVICES/ BACKGROUND WORKERS - Running tasks off main thread, and running tasks in a Windows Service
- DEBUGGING AND TRACING - Proper error logging from servers, avoiding “Yellow screen of Death” in production as well as con guring and using Visual Studio debugging tools
- INTEGRATION - Integration with Web API, WCF services, etc.
- LOCALISATION AND GLOBALISATION - Tools, techniques and considerations when implementing globalisation to gain a better understanding of the building blocks of a globalised application, timezone considerations and translations
- CONCURRENCY AND TRANSACTION MANAGEMENT - Concurrency and transaction management, to provide an in depth understanding of writing more robust and multi-threaded applications
UX FORUM
WHAT IS INTERACTION DESIGN?
- Explain the difference between good and poor interaction design
- Describe what interaction design is and how it relates to HCI and other elds
- Explain what usability is
- Describe what is involved in the process of interaction design
- Outline the different forms of guidance used in interaction design
- Enable you to evaluate an interactive product
- Explain what is meant by the problem space
- Explain how to conceptualise interaction
- Describe what a conceptual model is and explain the different kinds
- Discuss the pros and cons of using interface metaphors as conceptual models
- Debate the pros and cons of using realism versus abstraction at the interface
- Outline the relationship between conceptual design and physical design
UNDERSTANDING USERS
UNDERSTANDING REQUIREMENT & NEEDS
- Describe different kinds of requirements
- Enable you to identify examples of different kinds of requirements from a simple description
- Explain how different data-gathering techniques may be used, and enable you to choose among them for a simple description (next session)
WHAT ARE AFFECTIVE ASPECTS AND HOW DO THEY INFLUENCE INTERACTION DESIGN?
INTERFACES & INTERACTIONS
- Present information on a screen
- Determining menus
- Determining navigation
- Designing icons for recognition
- Designing forms and dialog boxes
PROCESS OF INTERACTION DESIGN
- Interaction design process x Feedback
- Prototyping
- Interaction design lifecycle
JAVA FORUM
CORE JAVA
- JVM Components
- Class loading
- Common class loading problems
- Runtime Data Areas
- Garbage Collection Basics
- JVM Tuning
- Re ection Basics
- Closures
- Processing Streams
- Date API
- Collection usage guidelines
- Polymorphism and generics in the Java implementation x Generic methods
- Generic declarations
- Generic pitfalls
INTRO TO SPRING
- Dependency Injection and Inversion of Control (The Hollywood Principle)
- Constructor-based dependency injection
- Setter-based dependency injection
- Creating beans with XML Con g/Java Con g
- Collections, Inner beans, Bean Inheritance, Propertiesfrom properties les, Bean Pro les, Bean Scopes and FactoryBean elements
- Application Context
- Sprint Annotations (Component Scanning)
- Best Practices
- Spring Bean Lifecycle (With extension points) x Spring Data Access
- Practical examples
- Spring Boot
ADVANCED SPRING
- Aspect, Point Cuts, Join points and Advice
- Practical uses (e.g logging, transactions and caching) x AOP Proxies
- Practical Example
- Spring/Hibernate Setup and Con guration
- Overview
- Isolation levels
- Transaction Propagation
- Rollback rules
- Testing
- Overview
- Authorization vs Authentication
- Con guration
- Method security
- Security Filter Chain
- Practical examples
- Spring Cloud
MAVEN
- Overview
- Environment Setup
- Build Life Cycle
- Creating Maven projects
- Release management
- Dependency management
- Repository management
- Multi module builds
- Build pro les
- Plug-in management
- Gradle/Ant
- Build automation
- Features of CI Servers
- Compare and contrast different CI Servers
THREADING
- Why write thread safe code
- Stateless Objects, Immutable Objects and using synchronisation
- Check-then-act, read-modify-write x Atomic Operations
- ThreadLocal
- The Synchronised keyword
- The Volatile keyword
- Reentrant Lock
- Synchronised Collections
- Concurrent Collections
- Latches
- Semaphore
- Barrier
- Starting a thread
- Executor (Thread Pools)
- Future Task
- Thread Interuption/Cancellation
- Deadlock
- Performance Considerations
TESTING
- Why produce quality code x Principles of clean code
- Common code smells
- Sonar
- Mocking framework
- Checkstyle
- FindBugs
- What is Integration Testing
- Integration Testing vs Unit Testing x Frameworks for Integration Testing x What makes good unit tests
- Frameworks for unit testing x Testing with Spring
- Gerrit Stash, Upsource
- Crucible
JPA
- Entities
- Entity Relationships
- JPA Annotations
- Cascade Operations
- Fetch Types
- Entity Manager
- Entity Inheritance
- Locking
- Persistence Units
- Query Language
- Named Queries
- Second Level Cache
- Practical examples with repository pattern
INTRO IN JEE
- JEE Overview
- JEE Tiers & their roles
- JEE APIs
- Java EE Containers
- Java EE Container Services
- Java EE Container Types
- Packaging EARs and WARs
- Naming and Directory Concepts and Operations
- Accessing Objects in the directory x JNDI Service Providers
FRAMEWORKS & UTLITIES
- Log levels, what and when to log
- Loggers: Java util logging/Log4J/Logback/tinylog
- Logging abstractions : SLF4J/Commons Logging
- Utilities
- Collections
- Graphs
- Other
- StringUtils/Builder
- HashCodeBuilder/CompareToBuilder/ToStringBuilder
- Builder
- Useful collections
- IOUtils
- Joda Time
- Con guration and usage x Velocity/Thymeleaf
- ehCache/hazelcast/guava cache
EJBs
- Role of EJBs
- Advantages & Disadvantages Dependency Injection
- EJB - Environment setup
- Stateless, Stateful, Singleton, MDB, Entity Beans
- Life Cycles of EJBs
- Remote vs Local Access
- Accessing EJBs
- Annotations
- Xml con g
- Timer Service
- Callbacks
- Asynchronous EJB Method Invocations
INTEGRATION
- Types of Web Services
- Building Web Services with JAX-WS x Building Web Services with JAX-RS x Securing Web services
- Spring con guration and use
- Topics vs Queues
- Consuming & Producing Messages x Message Types
- Message Reliability Mechanisms
- Spring con guration and use
WEB
- Servlet Lifecycle
- Servlet Mapping
- Using scope objects
- Filtering Requests & Responses x Forwarding & redirecting
- Annotations
- Expression Language
- Lifecycle of JSPs
- Jstl
- Creating custom tags
- Directives
- JSF - Description
- The Dispatcher Servlet
- Controllers
- Handler Mapping
- Resolving Views
- AJAX
SQL FORUM
T-SQL FOUNDATIONS - BASIC SELECTS
- Introduction to T-SQL as a language
- Normalisation
- Data types, CASE statements and related functions, and date and time functions
- Filtering and sorting. TOP and OFFSET_FETCH
COMBINING SETS - GROUPING AND WINDOWING
- Understanding different types of joins
- Sub-queries, table expressions and APPLY
- Set operators (UNION, INTERSECT, EXCEPT) x Writing grouped queries
- PIVOT and UNPIVOT
- Window functions
QUERYING FULL-TEXT DATA AND WORKING WITH XML
- Full-text catalogues and indexes x Using CONTAINS and FREETEXT x Full-text and semantic search
- Query results as XML
- Querying XML data with XQuery x The XML data type
CREATE TABLES, VIEWS AND INLINE FUNCTIONS - ENFORCING DATA INTEGRITY
- Creating a table
- Primary and foreign key constraints
- Unique, check, and default constraints
- Creating and using views, inline functions, and synonyms
INSERTING, UPDATING AND DELETING
- INSERT, UPDATE, and DELETE statements
- The difference between DELETE and TRUNCATE x Identity columns
- MERGE statement
- The OUTPUT option
TRANSACTIONS, ERROR HANDLING, AND DYNAMIC SQL. T-SQL ROUTINES
- Understanding transactions and locking x Error handling
- Dynamic SQL and SQL injection
- Stored procedures
- Triggers
- User-de ned functions (scalar and table-valued)
ANALYSING QUERY PERFORMANCE
- Introduction to query optimisation
- Execution plans and pro ler
- Dynamic management objects
- Indexes, search arguments, and statistics
CURSORS, SETS AND TEMP TABLES. FURTHER OPTIMISATION
- Iterative/cursor vs set-based operations
- Temporary tables and table variables
- Advanced optimisation aspects