Hands-on introduction to cloud computing and developing cloud-native (esp. mobile) applications. Cloud application models, services and infrastructures (virtualization, data center networking, distributed file systems), cluster computing systems (e.g. Spark), fundamental trade offs and methods (CAP theorem, NoSQL systems), architecture (modern n-tier, lambda, kappa) and applications (big data analytics, large-scale web services). Programming to develop scalable applications running on the cloud.
Basically, this course has the following learning outcomes:
- What is cloud computing? Why we need it and in which cases we can use that paradigm (Module-1: What is it?).
- How to implement a cloud system? What is essential to build an efficient cloud solution (Module-2: How to implement it?)
- How to sustain a cloud application in both business and technical terms (Module-3: How to manage it?)
- Instructor: Dr. Orçun Dayıbaş
- T. Assistant: Mousa Farshkar Azari
Please refer to the web page of the course.
Please refer to the web page of the course.
Item | Type | Weight |
---|---|---|
Quizzes/HWs | Written/Imp. | 10% |
Midterm | Essay/written | 25% |
Project | Implementation | 30% |
Final | Essay/written | 35% |
Each student is expected to be part of a team (size of 3 people) to implement a cloud-native mobile-first application. Grading criteria will include the operational features of the application (we will cover these features in detail throughout the semester). During the classes each team will present: reports and demo/presentation on at least but not limited to the implementation details, external services, cloud characteristics, performance analysis, etc.
Each group has 15 min. to present including demonstration of the application. You can find the ordered list for each session below.
Session | Date | List of groups |
---|---|---|
1 | 2021-04-26 / 10:30 | 1, 2 |
2 | 2021-04-26 / 11:30 | 11, 4, 5 |
3 | 2021-04-28 / 15:30 | 8, 12, 9 |
4 | 2021-04-28 / 16:30 | 7, 14 |
5 | 2021-05-03 / 10:30 | 6, 3, 13 |
6 | 2021-05-03 / 11:30 | 10, 15 |
- Speaker: Ahmet Avcı (Software Engineer at Trendyol Group)
- Date: 2021-05-05
- Midterm: Online written exam / 10:30, April 05, 2021
- Final: Online written exam / 17:30, May 23, 2021
- Quiz-1: @Bilkent-Moodle / 11:00, March 22, 2021
- Quiz-2: @Bilkent-Moodle / 17:00, April 14, 2021
Module | Topics & Week Numbers | Notes |
---|---|---|
Module-1: What is it? | 1. Introduction to cloud computing (w#1) 2. Features of cloud (w#1) 3. Cloud application architectures (w#2) 4. Designing systems for scale (w#2, w#3) 5. Microservices (w#3) |
Module content, Project definition, Team formations |
Module-2: How to implement it? | 6. Anatomy of a data center (w#6) 7. Virtualization & containers (w#4) 8. Resource management & coordination (w#8) 9. Programming models (w#9) 10. Cloud-native application development (w#9) 11. Mobile applications (w#12) |
Module content, Hands-on labs (w#5), Spring break (w#7), Midterm, P. report(s) |
Module-3: How to manage it? | 12. Migrating to cloud (w#11) |
Module content, Feedback & review (w#11), Project report(s), demo & presentations (w#13) Guest speaker (w#14) |
Extension | X-1. API Design (w#6) X-2. Serverless (w#8) X-3. UI/UX/DX Design (w#8) |
Additional content for this term (clarifications and extensions) |
Hands-on Labs | Date | Week # | Prerequisites |
---|---|---|---|
Docker | 2021-02-24 | 4 | git 2.20.1+, docker 19.03.2+ (optional: a Docker ID) |
Kubernetes | 2021-03-03 | 5 | Access to Katacoda k8s playground |
Quarkus | 2021-04-07 | 10 | Maven 3.6.2+, JDK 8 or 11+ installed (with JAVA_HOME configured) |
Flutter | 2021-04-21 | 12 | https://flutter.dev/docs/get-started/install |
- Monday 11:30 - 12:20 (EB-202)
- Wednesday 15:30 - 17:20 (EB-202)
- Regular time slots are used for remote instructions.
- Details for Zoom: https://web4.bilkent.edu.tr/zoom/
- There is no any upfront arrangement for recording the Zoom sessions. Therefore, please continue to take regular notes like you did in the physical classroom environment.