Cognitive Test for selection
Introduction Workshop @ Calcey
Semester 1
CS50's Introduction to Computer Science
- A broad and robust understanding of computer science and programming
- How to think algorithmically and solve programming problems efficiently
- Concepts like abstraction, algorithms, data structures, encapsulation, resource management, security, software engineering, and web development
- Familiarity in a number of languages, including C, Python, SQL, and JavaScript plus CSS and HTML
- How to engage with a vibrant community of like-minded learners from all levels of experience
- How to develop and present a final programming project to your peers
- How to write a Web page
- Concepts of a markup language
- Basics of HTML5 and CSS
- Web design and style
- Page layout and flexbox
- Describe a relational database and explain relational database concepts.
- Design the schema of a relational database.
- Create database objects such as tables, keys, constraints, and views.
- Load tables with data from .CSV files.
- Demonstrate working knowledge of MySQL, PostgreSQL and IBM Db2.
- How to critically evaluate your role in workplace interactions
- How to employ strategies for active listening
- How to ask questions that move conversations forward
- How to communicate ideas clearly and succinctly
- How to assess needs of clients and colleagues
- Best practices for face-to-face and remote communication
Critical Thinking & Problem Solving
- How to perform strategic analysis and assessment
- How to perceive and assess a critical need and design a tailored solution
- How to identify key stakeholders and ensure their needs are met
- How to employ adaptive problem-solving
- How to work through obstacles collaboratively
- How to analyze failure to improve future performance
- How to understand the complexities of group dynamics and interactions
- How to motivate by improving group climate
- How to develop skills in leadership, problem-solving, conflict management, and other critical group dynamics
- How to assess team effectiveness and success
- Understand the elements of effective stories and how to use them in the workplace
- How to tailor your messaging to a defined target audience
- How to structure written messages for maximum audience impact, taking into consideration tone, style, point of view
- How various platforms convey messages differently in a professional setting
End semester exam at Calcey
Semester 2
Introduction to Object-Oriented Programming with Java I: Foundations and Syntax Basics
- Learn the basic elements of a Java program
- Learn how to execute Java programs
- Understand the motivation behind object-oriented programming
- Understand how to think of solutions in terms of classes and objects
- Create objects and invoke methods
- Learn three kinds of decision-making statements (if, if-else, switch)
- Learn three kinds of iteration statements (while, do-while, for)
- Explore modularity and reusability in the context of methods
- Understand when and how to overload methods
Introduction to Object-Oriented Programming with Java II: Object-Oriented Programming and Algorithms
- Learn how to write instantiable classes that serve as blueprints of concepts or objects
- Learn how to write and implement accessor and mutator methods
- Learn how to use constructor overloading and chaining
- Learn how to use method overloading
- Identify when and how to use an abstract class
- Learn how to define an interface
- Describe version control and its place in social and collaborative coding and in DevOps.
- Explain basic Git concepts such as repositories and branches used for distributed version control and social coding.
- Create GitHub repositories and branches, and perform pull requests (PRs) and merge operations, to collaborate on a team project.
- Build your portfolio by creating and sharing an open-source project on GitHub.
Data Structures & Algorithms I: ArrayLists, LinkedLists, Stacks and Queues
- Develop mature Java programming skills with the use of generics, references and interfaces
- Understand the principles of data storage in Node objects
- Program various low-level data structures like Singly, Doubly and Circular LinkedLists
- Design and implement ADTs like Lists (backed by Arrays), Stacks and Queues
- Examine the edge cases that occur in these linear data structures
- Analyze the time complexity of linear data structures and their algorithms
- Compute amortized analysis for Arrays, ArrayLists, Stacks and Queues
- Implement recursive methods that operate on linear data structures
- Extend knowledge of these concepts to other structures like PriorityQueues and Deques
- Perform basic SQL operations
- Create a database instance in the cloud
- Create tables and load data
- Query data using string patterns and ranges
- Sort and group data in result sets
- Invoke built-in database functions such as MIN(), MAX(), AVG(), etc.
- Work with various datatypes including INTEGER, CHAR, VARCHAR, DATE, TIME, TIMESTAMP
- Define the term NoSQL and the technology it references.
- Describe the major categories of NoSQL datastores (document, key-value, graph, etc.) and their architectural differences.
- List the most commonly used NoSQL datastores, their primary use cases and benefits (MongoDB, Cassandra, Cloudant, Couch DB, etc.).
- Understand the factors affecting return on investment for using locally hosted databases, versus hosted database versus DBaaS.
- Demonstrate hands-on working knowledge of MongoDB
- Demonstrate hands-on working knowledge of Cassandra
- Demonstrate hands-on working knowledge of Cloudant
AWS Cloud Practitioner Essential
- Define the cloud and how it works
- Differentiate between cloud computing and deployment models
- Describe the basic global infrastructure of the cloud
- Identify an appropriate solution using AWS Cloud services with various use cases
- Describe the Well-Architected Framework
- Explain the Shared Responsibility model
- Describe security services with the AWS Cloud
- How to apply the basic elements of the speech communication process
- Tools and methods for controlling public speaking anxiety
- How to craft a clear and impactful speech
- How to critique other communicators using the principles of this course
- How to identify main and supporting ideas
- How to utilize best practices for presenting quantitative data using images
- How to incorporate basics of visual design in everyday workplace presentations
- How to select impactful and appropriate images for various audiences to support your message
- How to understand visual hierarchy and other text-to-image relationships
End semester exam at Calcey
Semester 3
Data Structures & Algorithms II: Binary Trees, Heaps, SkipLists and HashMaps
- Develop mature Java programming skills by using recursion in Tree ADTs
- Investigate different nonlinear, linked data structures: Trees, Heaps, SkipLists and HashMaps
- Study the significant uses and applications of hierarchical tree structures
- Explore tree properties, and categorizing based on shape and order
- Design and implement the binary trees: BSTs and Heaps
- Examine edge cases and efficiencies in BST and Heap operations
- Understand the up-heap, down-heap and build-heap procedures
- Consider the probabilistic data structure, SkipLists, and randomization
- Implement a HashMap ADT with its key-value pairs
- Analyze the different collision strategies with HashMaps
- Compute amortized analysis for Heaps and HashMaps
Data Structures & Algorithms III: AVL and 2-4 Trees, Divide and Conquer Algorithms
- Improve Java programming skills by implementing AVLs and sorting algorithms
- Study techniques for restoring balance in AVL and (2-4) trees
- Distinguish when to apply single and double rotations in AVLs
- Investigate complex (2-4) trees that exhibit underflow and overflow problems
- Demonstrate the appropriate use of promotion, transfer and fusion in (2-4) trees
- Implement basic iterative sorting algorithms: Bubble, Insertion and Selection
- Explore optimizations to improve efficiency, including Cocktail Shaker Sort
- Contemplate two Divide & Conquer comparison sorting algorithms: Merge and Quick Sort
- Consider one non-comparison Divide & Conquer algorithm: LSD Radix Sort
- Analyze the stability, memory usage and adaptations of all sorting algorithms presented
- Study the time complexity for the AVLs, (2-4) Trees and sorting algorithms
- How to add JavaScript code in your Web site/Web app, and how to debug it
- How to make interactive Web sites through the DOM API
- How to change the CSS styles of HTML5 elements from JavaScript
- How to deal with HTML5 forms
- How to make basic graphics and animations using the HTML5 canvas
- How to adopt the 5 practices of Agile, a subset of DevOps: small batches, minimum viable product, pair programming, behavior- and test-driven development.
- How to create and refine a product backlog using the sprint planning process. Produce potentially shippable product increments with every iteration.
- How to write good user stories, estimate and assign story points and track stories using a kanban board. Incorporate Scrum artifacts, events, and benefits.
- How to create burndown charts to forecast the ability to meet a sprint goal. Use metrics to enhance performance, productivity, and client satisfaction.
Introduction to User Experience
- What's UX and why do we need it?
- When do we need UX, who does UX and how do we do UX
- Discuss the UX practice in terms of commonly used tools, challenges and wins
- Experiment the phases of a UX project (research, Ideation, prototyping and testing) and how they relate to each other
Building Web Applications in Django
- Describe and build a data model in Django
- Apply Django model query and template tags/code of Django Template Language (DTL)
- Define Class, Instance, Method
- Build forms in HTML
Automated Software Testing: Unit Testing, Coverage Criteria and Design for Testability
- How to test any software system using current state-of-the-arttechniques
- How to derive test cases that deal with exceptional, corner, and bad-weather cases by means of several different techniques
- The limitations of current testing techniques and how to decide on the best testing strategies for a given context
- How to develop testable architectures and to write maintainable test code
Automated Software Testing: Model and State-based Testing
- The key ideas behind advanced software testing techniques, such as mutation and property-based testing
- The current state-of-the-art in software testing research, such as the usage of artificial intelligence to automate testing activities
- The limitations of current testing techniques, and how todetermine the best testing strategies for a given context
End semester exam at Calcey