Difference between revisions of "BITL-CS2"

From DiLab
Jump to: navigation, search
(Resources)
(GitHub)
(25 intermediate revisions by the same user not shown)
Line 20: Line 20:
  
 
=Administrative information=
 
=Administrative information=
Course Syllabus tba
+
Course [https://www.dropbox.com/s/gix0cxm82b1fgxj/Syllabus_CS2_2020-1.pdf?raw=1 Syllabus]
 
<!-- [https://www.dropbox.com/s/aqbvmka49h9xowp/Syllabus.pdf?raw=1 is available here] -->
 
<!-- [https://www.dropbox.com/s/aqbvmka49h9xowp/Syllabus.pdf?raw=1 is available here] -->
  
 
Communication:  
 
Communication:  
* via slack: workspace name: bitl-cs2-2019
+
* via slack: workspace name: bitl-cs2-2020
 
* via email: use instructor's email address for personal communication
 
* via email: use instructor's email address for personal communication
 
* office hours: by appt.
 
* office hours: by appt.
 +
 +
<!--
 +
= Tests =
 +
* [https://forms.gle/4jhSre18yhSyUtLV6 Homework Quiz 1]
 +
-->
 +
 +
=Deliverables=
 +
Deliverables in this course include the following:
 +
* Lecture questions - due by midnight on the next day, unless otherwise specified.
 +
* Lab activities
 +
* Homework
 +
* Quizzes as scheduled on the calendar
 +
* Final exam
  
 
=Calendar=
 
=Calendar=
  
{| border=1 cellspacing=0 cellpadding=4
+
{| border=1 cellspacing=0 cellpadding=4 style = ""border-color: #ddd;""
 
|-
 
|-
 
! Date  
 
! Date  
 
! Topic
 
! Topic
! Assignments, tests, deliverables
+
! Deliverables
 
|-
 
|-
 
|
 
|
 
==== 06.01.20 ====
 
==== 06.01.20 ====
 
|
 
|
'''Course Introduction'''
+
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''Course Introduction'''</big>
 +
|}
  
  
Line 50: Line 65:
 
==== 08.01.20 ====
 
==== 08.01.20 ====
 
|
 
|
'''IDE Setup. Scala Introduction'''
+
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''IDE Setup. Scala Introduction'''</big>
 +
|}
 
* [https://www.dropbox.com/s/mgo4xacl5gfheol/L01_Scala_intro_1.pdf?raw=1 Slides]
 
* [https://www.dropbox.com/s/mgo4xacl5gfheol/L01_Scala_intro_1.pdf?raw=1 Slides]
  
Line 66: Line 83:
 
==== 10.01.20 ====
 
==== 10.01.20 ====
 
|
 
|
'''Scala Types and Reading Files'''
+
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''Scala Types and Reading Files'''</big>
 +
|}
 
* [https://www.dropbox.com/s/i1x8qeldz4skb9f/L02_Scala_intro_2.pdf?raw=1 Slides]
 
* [https://www.dropbox.com/s/i1x8qeldz4skb9f/L02_Scala_intro_2.pdf?raw=1 Slides]
  
Line 86: Line 105:
 
==== 13.01.20 ====
 
==== 13.01.20 ====
 
|
 
|
'''Unit Testing'''
+
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''Unit Testing'''</big>
 +
|}
 
* [https://www.dropbox.com/s/7zeact2v8k9a1y7/L03_Unit_testing.pdf?raw=1 Slides]
 
* [https://www.dropbox.com/s/7zeact2v8k9a1y7/L03_Unit_testing.pdf?raw=1 Slides]
  
 
'''Objective''': Test your own code without needing AutoLab
 
'''Objective''': Test your own code without needing AutoLab
 +
 +
[[#HW1 | HW1]] announced.
  
 
'''Reading/Reference''':
 
'''Reading/Reference''':
Line 104: Line 127:
 
==== 15.01.20 ====
 
==== 15.01.20 ====
 
|
 
|
'''Practice Unit Testing'''
+
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''Practice Unit Testing'''</big>
 +
|}
  
  
Line 113: Line 138:
 
==== 17.01.20 ====
 
==== 17.01.20 ====
 
|
 
|
'''Classes and Objects'''
+
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''Classes and Objects'''</big>
 +
|}
 
* [https://www.dropbox.com/s/wzljvj7tisf97gu/L04_Classes.pdf?raw=1 Slides]
 
* [https://www.dropbox.com/s/wzljvj7tisf97gu/L04_Classes.pdf?raw=1 Slides]
  
Line 130: Line 157:
 
==== 20.01.20 ====
 
==== 20.01.20 ====
 
|
 
|
'''Model of Execution 1'''
+
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''Model of Execution 1'''</big>
 +
|}
 
* [https://www.dropbox.com/s/4ktq1dldxyt1j7v/L05_Execution_1.pdf?raw=1 Slides]
 
* [https://www.dropbox.com/s/4ktq1dldxyt1j7v/L05_Execution_1.pdf?raw=1 Slides]
  
Line 146: Line 175:
 
==== 22.01.20 ====
 
==== 22.01.20 ====
 
|
 
|
'''Model of Execution 2'''
+
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''Model of Execution 2'''</big>
 +
|}
 
* [https://www.dropbox.com/s/hgiwb9r170usv34/L06_Execution_2.pdf?raw=1 Slides]
 
* [https://www.dropbox.com/s/hgiwb9r170usv34/L06_Execution_2.pdf?raw=1 Slides]
  
Line 161: Line 192:
 
==== 24.01.20 ====
 
==== 24.01.20 ====
 
|
 
|
'''Physics Engine Quiz'''
+
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''Physics Engine Quiz'''</big>
 +
|}
 +
 
  
 +
[[#HW2 | HW2]] announced.
  
 
|
 
|
* '''HW1: Physics Engine'''
+
* [https://docs.google.com/document/d/1rrq5WjyOwupKH3GigH7crZ6elXv2ggZoSGrnP9hEMKU/view#heading=h.4012eaop3dxl '''Due HW1: Physics Engine''']
  
 
|-
 
|-
Line 171: Line 206:
 
==== 27.01.20 ====
 
==== 27.01.20 ====
 
|
 
|
'''Inheritance'''
+
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''Inheritance'''</big>
 +
|}
 
* [https://www.dropbox.com/s/tc0hdxyhn2e78ej/L07_Inheritance.pdf?raw=1 Slides]
 
* [https://www.dropbox.com/s/tc0hdxyhn2e78ej/L07_Inheritance.pdf?raw=1 Slides]
  
Line 181: Line 218:
  
 
|
 
|
* '''Lab Activity 3'''
+
* [https://docs.google.com/document/d/1OpjGr1FTuBcj06_BMw_S8HvzyYHaetyYot_IZ7-LmUg/edit?usp=sharing '''Lab Activity 3''']
  
 
|-
 
|-
Line 187: Line 224:
 
==== 29.01.20 ====
 
==== 29.01.20 ====
 
|
 
|
'''Level 1 Quiz'''
+
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''Level 1 Quiz'''</big>
 +
|}
  
  
Line 197: Line 236:
 
==== 31.01.20 ====
 
==== 31.01.20 ====
 
|
 
|
'''Polymorphism and JSON'''
+
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''Polymorphism and JSON'''</big>
 +
|}
 
* [https://www.dropbox.com/s/zimg0h83faqu6uy/L08_Polymorphism.pdf?raw=1 Slides]
 
* [https://www.dropbox.com/s/zimg0h83faqu6uy/L08_Polymorphism.pdf?raw=1 Slides]
  
Line 216: Line 257:
 
==== 03.02.20 ====
 
==== 03.02.20 ====
 
|
 
|
'''Design Pattern: State Pattern 1'''
+
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''Design Pattern: State Pattern 1'''</big>
 +
|}
 +
* [https://www.dropbox.com/s/xgd3dsnra43iz1e/L09_State_Pattern_1.pdf?raw=1 Slides]
  
 
'''Objective''': You will gain experience with the state design pattern to dynamically change the behavior of an object
 
'''Objective''': You will gain experience with the state design pattern to dynamically change the behavior of an object
Line 224: Line 268:
  
 
|
 
|
* '''Project Demo 1'''
+
* [https://docs.google.com/document/d/18mxVo3_T0WmFWljXpsOZ88h52fFtdL6JmpbUFFW1Pi0/edit?usp=sharing '''Due Project Demo 1''']
  
 
|-
 
|-
Line 230: Line 274:
 
==== 05.02.20 ====
 
==== 05.02.20 ====
 
|
 
|
'''Design Pattern: State Pattern 2'''
+
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''Design Pattern: State Pattern 2'''</big>
 +
|}
 +
* [https://www.dropbox.com/s/9gymjldb3khbvn8/L10_State_Pattern_2.pdf?raw=1 Slides]
  
 
'''Objective''': Gain more familiarity with the state design pattern by reviewing the Jumper code
 
'''Objective''': Gain more familiarity with the state design pattern by reviewing the Jumper code
Line 240: Line 287:
 
==== 07.02.20 ====
 
==== 07.02.20 ====
 
|
 
|
'''Design Pattern: State Pattern 3'''
+
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''Design Pattern: State Pattern 3'''</big>
 +
|}
 +
* [https://www.dropbox.com/s/qo10tcodvyvmy9h/L11_State_Pattern_3.pdf?raw=1 Slides]
  
 
'''Objective''': Gain more familiarity with the state design pattern
 
'''Objective''': Gain more familiarity with the state design pattern
Line 250: Line 300:
 
==== 10.02.20 ====
 
==== 10.02.20 ====
 
|
 
|
'''GUI'''
+
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''GUI'''</big>
 +
|}
 +
* [https://www.dropbox.com/s/wep3zxfptwlevdt/L12_GUI.pdf?raw=1 Slides]
  
 
'''Objective''': Build desktop GUIs
 
'''Objective''': Build desktop GUIs
Line 263: Line 316:
  
 
|
 
|
* '''Lab Activity 4'''
+
* [https://docs.google.com/document/d/16khfhVph_5_bsYSeMXmGz0r3ydGMP-Vp3zkJWR3klMs/edit?usp=sharing '''Lab Activity 4''']
  
 
|-
 
|-
Line 269: Line 322:
 
==== 12.02.20 ====
 
==== 12.02.20 ====
 
|
 
|
'''Design Architecture: MVC'''
+
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''Design Architecture: MVC'''</big>
 +
|}
 +
* [https://www.dropbox.com/s/cr1u7gcuuk88xnu/L13_MVC.pdf?raw=1 Slides]
  
 
'''Objective''': Become familiar with the MVC architecture pattern and its benefits
 
'''Objective''': Become familiar with the MVC architecture pattern and its benefits
Line 283: Line 339:
 
==== 14.02.20 ====
 
==== 14.02.20 ====
 
|
 
|
'''Calculator Quiz'''
+
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''Calculator Quiz'''</big>
 +
|}
 +
 
  
 +
[[#HW3 | HW3]] announced.
  
 
|
 
|
* '''HW2: Calculator'''
+
* [https://docs.google.com/document/d/1Kjo2nRqKAXY8JJaXxtAJY27RaS-_XnwNzOk3ekOjlZY/edit?usp=sharing '''Due HW2: Calculator''']
  
 
|-
 
|-
Line 293: Line 353:
 
==== 17.02.20 ====
 
==== 17.02.20 ====
 
|
 
|
'''Actors Introduction'''
+
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''Actors Introduction'''</big>
 +
|}
 +
* [https://www.dropbox.com/s/9wdgrnj04gwwbzi/L14_Actors.pdf?raw=1 Slides]
  
 
'''Objective''': Write programs with multiple pieces of code executing at the same time
 
'''Objective''': Write programs with multiple pieces of code executing at the same time
Line 310: Line 373:
 
==== 19.02.20 ====
 
==== 19.02.20 ====
 
|
 
|
'''Level 2 Quiz'''
+
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''Level 2 Quiz'''</big>
 +
|}
  
  
Line 320: Line 385:
 
==== 21.02.20 ====
 
==== 21.02.20 ====
 
|
 
|
'''Testing Actors and Database Connections'''
+
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''Testing Actors and Database Connections'''</big>
 +
|}
 +
* [https://www.dropbox.com/s/9dg1ia2szrqcjjp/L15_Actors_Databases.pdf?raw=1 Slides]
  
 
'''Objective''': Write unit tests for actors and connect to a MySQL server
 
'''Objective''': Write unit tests for actors and connect to a MySQL server
Line 341: Line 409:
 
==== 24.02.20 ====
 
==== 24.02.20 ====
 
|
 
|
'''Web Sockets 1'''
+
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''Web Sockets 1'''</big>
 +
|}
 +
* [https://www.dropbox.com/s/6dkmly1ue8ucgnq/L16_WebSocket_Server.pdf?raw=1 Slides]
  
 
'''Objective''': Enable 2-way communication between the browser and web server
 
'''Objective''': Enable 2-way communication between the browser and web server
Line 350: Line 421:
  
 
|
 
|
* '''Project Demo 2'''
+
* [https://docs.google.com/document/d/1-Rpz1nUcWKTzMJVYDwFKj6Nq8qgy5YFlpFDxDXRZVlQ/edit?usp=sharing '''Due Project Demo 2''']
  
 
|-
 
|-
Line 356: Line 427:
 
==== 26.02.20 ====
 
==== 26.02.20 ====
 
|
 
|
'''Web Sockets 2'''
+
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''Web Sockets 2'''</big>
 +
|}
 +
* [https://www.dropbox.com/s/9ttm77llpr6ud2z/L17_WebSocket_Clients.pdf?raw=1 Slides]
  
 
'''Objective''': Connect a Scala front end to a web socket server
 
'''Objective''': Connect a Scala front end to a web socket server
Line 370: Line 444:
 
==== 28.02.20 ====
 
==== 28.02.20 ====
 
|
 
|
'''Actors Application with Web Sockets'''
+
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''Actors Application with Web Sockets'''</big>
 +
|}
 +
* [https://www.dropbox.com/s/mfvgrlyavg2u0e1/L18_WebSocket_App.pdf?raw=1 Slides]
  
  
Line 379: Line 456:
 
==== 02.03.20 ====
 
==== 02.03.20 ====
 
|
 
|
'''MMO Architecture 1'''
+
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''MMO Architecture 1'''</big>
 +
|}
 +
* [https://www.dropbox.com/s/ccscfme4k7haznv/L19_MMO.pdf?raw=1 Slides]
  
 
'''Objective''': See an example using the MMO architecture form this class
 
'''Objective''': See an example using the MMO architecture form this class
Line 390: Line 470:
 
==== 04.03.20 ====
 
==== 04.03.20 ====
 
|
 
|
'''MMO Architecture 2'''
+
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''MMO Architecture 2'''</big>
 +
|}
 +
* [https://www.dropbox.com/s/1ou1orerfq0oo18/L20_MMO_2.pdf?raw=1 Slides]
  
 
'''Objective''': Explore the MMO architecture applied to the course project
 
'''Objective''': Explore the MMO architecture applied to the course project
Line 400: Line 483:
 
==== 06.03.20 ====
 
==== 06.03.20 ====
 
|
 
|
'''Clicker Quiz'''
+
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''Clicker Quiz'''</big>
 +
|}
 +
 
  
 +
[[#HW4 | HW4]] announced.
  
 
|
 
|
* '''HW3: Clicker'''
+
* '''Due HW3: Clicker'''
  
 
|-
 
|-
Line 410: Line 497:
 
==== 09.03.20 ====
 
==== 09.03.20 ====
 
|
 
|
'''Custom Sorting with First-Order Functions'''
+
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''Custom Sorting with First-Order Functions'''</big>
 +
|}
  
 
'''Objective''': Explore custom sorting in scala and gain experience with function and type parameters
 
'''Objective''': Explore custom sorting in scala and gain experience with function and type parameters
Line 426: Line 515:
 
==== 11.03.20 ====
 
==== 11.03.20 ====
 
|
 
|
'''Level 3 Quiz'''
+
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''Level 3 Quiz'''</big>
 +
|}
  
  
Line 436: Line 527:
 
==== 13.03.20 ====
 
==== 13.03.20 ====
 
|
 
|
'''Merge Sort and Recursion'''
+
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''Merge Sort and Recursion'''</big>
 +
|}
  
 
'''Objective''': Gain an understanding of recursion combined with first-order functions and type parameters
 
'''Objective''': Gain an understanding of recursion combined with first-order functions and type parameters
Line 452: Line 545:
 
==== 16.03.20 ====
 
==== 16.03.20 ====
 
|
 
|
'''Linked List'''
+
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''Linked List'''</big>
 +
|}
  
 
'''Objective''': Understand the structure of a linked list
 
'''Objective''': Understand the structure of a linked list
Line 467: Line 562:
 
==== 18.03.20 ====
 
==== 18.03.20 ====
 
|
 
|
'''Linked List Algorithms'''
+
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''Linked List Algorithms'''</big>
 +
|}
  
 
'''Objective''': Explore how various operations are performed on a linked list
 
'''Objective''': Explore how various operations are performed on a linked list
Line 481: Line 578:
 
==== 20.03.20 ====
 
==== 20.03.20 ====
 
|
 
|
'''Stack and Queue'''
+
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''Stack and Queue'''</big>
 +
|}
  
 
'''Objective''': Use a linked list to implement the functionality of a stack and queue
 
'''Objective''': Use a linked list to implement the functionality of a stack and queue
Line 495: Line 594:
 
==== 23.03.20 ====
 
==== 23.03.20 ====
 
|
 
|
'''Binary Tree and Traversals'''
+
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''Binary Tree and Traversals'''</big>
 +
|}
  
 
'''Objective''': Gain familiarity with the structure of binary trees and how to traverse existing trees
 
'''Objective''': Gain familiarity with the structure of binary trees and how to traverse existing trees
Line 513: Line 614:
 
==== 25.03.20 ====
 
==== 25.03.20 ====
 
|
 
|
'''Binary Search Tree'''
+
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''Binary Search Tree'''</big>
 +
|}
  
 
'''Objective''': Explore an application of binary trees by using them for searching and sorting
 
'''Objective''': Explore an application of binary trees by using them for searching and sorting
Line 526: Line 629:
 
==== 27.03.20 ====
 
==== 27.03.20 ====
 
|
 
|
'''Genetic Algorithm Quiz'''
+
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''Genetic Algorithm Quiz'''</big>
 +
|}
  
  
 
|
 
|
* '''HW4: Genetic Algorithm'''
+
* '''Due HW4: Genetic Algorithm'''
  
 
|-
 
|-
Line 536: Line 641:
 
==== 30.03.20 ====
 
==== 30.03.20 ====
 
|
 
|
'''Graph Representations and Breath-First Search'''
+
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''Graph Representations and Breath-First Search'''</big>
 +
|}
  
 
'''Objective''': Learn how to represent a graph in code and work with that representation
 
'''Objective''': Learn how to represent a graph in code and work with that representation
Line 552: Line 659:
 
==== 01.04.20 ====
 
==== 01.04.20 ====
 
|
 
|
'''Level 4 Quiz'''
+
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''Level 4 Quiz'''</big>
 +
|}
  
  
Line 562: Line 671:
 
==== 03.04.20 ====
 
==== 03.04.20 ====
 
|
 
|
'''Pathfinding with Breath-First Search'''
+
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''Pathfinding with Breath-First Search'''</big>
 +
|}
  
 
'''Objective''': Find the shortest path between two nodes using BFS
 
'''Objective''': Find the shortest path between two nodes using BFS
Line 572: Line 683:
 
==== 06.04.20 ====
 
==== 06.04.20 ====
 
|
 
|
'''Review and Examples'''
+
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''Review and Examples'''</big>
 +
|}
  
  
Line 582: Line 695:
 
==== 08.04.20 ====
 
==== 08.04.20 ====
 
|
 
|
'''MMO Quiz'''
+
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''MMO Quiz'''</big>
 +
|}
  
  
Line 592: Line 707:
 
==== 10.04.20 ====
 
==== 10.04.20 ====
 
|
 
|
'''Holiday'''
+
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''Holiday'''</big>
 +
|}
  
  
Line 601: Line 718:
 
==== 13.04.20 ====
 
==== 13.04.20 ====
 
|
 
|
'''Holiday'''
+
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''Holiday'''</big>
 +
|}
  
  
Line 610: Line 729:
 
==== 15.04.20 ====
 
==== 15.04.20 ====
 
|
 
|
'''Consultation week'''
+
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''Consultation week'''</big>
 +
|}
  
  
Line 619: Line 740:
 
==== 17.04.20 ====
 
==== 17.04.20 ====
 
|
 
|
'''Consultation week'''
+
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''Consultation week'''</big>
 +
|}
  
  
Line 629: Line 752:
 
==== 20.04.20 ====
 
==== 20.04.20 ====
 
|
 
|
'''(Exam week)'''
+
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''(Exam week)'''</big>
 +
|}
  
  
Line 638: Line 763:
 
==== 22.04.20 ====
 
==== 22.04.20 ====
 
|
 
|
'''Exam week - Final Exam'''
+
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''Exam week - Final Exam'''</big>
 +
|}
  
  
Line 648: Line 775:
 
==== 24.04.20 ====
 
==== 24.04.20 ====
 
|
 
|
'''(Exam week)'''
+
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''(Exam week)'''</big>
 +
|}
  
  
Line 654: Line 783:
  
 
|-
 
|-
|
 
 
|}
 
|}
  
Line 661: Line 789:
  
 
Assignments are announced by the course Slack channel.
 
Assignments are announced by the course Slack channel.
 +
 +
Every lecture has a lecture question that is due by midnight the same day.
 +
Submitting you work should be done in the respective GitHub repositories, as published in Slack.
 +
 +
== Homeworks ==
 +
===HW1===
 +
[https://docs.google.com/document/d/1rrq5WjyOwupKH3GigH7crZ6elXv2ggZoSGrnP9hEMKU/view HW1 description] - Physics Engine
 +
<!-- [https://docs.google.com/document/d/1rrq5WjyOwupKH3GigH7crZ6elXv2ggZoSGrnP9hEMKU/view#heading=h.4012eaop3dxl HW1 description] -->
 +
 +
===HW2===
 +
[https://docs.google.com/document/d/1Kjo2nRqKAXY8JJaXxtAJY27RaS-_XnwNzOk3ekOjlZY/edit?usp=sharing HW2 description] - Calculator
 +
 +
===HW3===
 +
[#HW3 HW3 description]
 +
 +
===HW4===
 +
[#HW4 HW4 description]
 +
 +
== Projects ==
 +
* [https://docs.google.com/document/d/18mxVo3_T0WmFWljXpsOZ88h52fFtdL6JmpbUFFW1Pi0/edit?usp=sharing Project1 description] - JRPG
 +
* [https://docs.google.com/document/d/1-Rpz1nUcWKTzMJVYDwFKj6Nq8qgy5YFlpFDxDXRZVlQ/edit?usp=sharing Project2 description] - JRPG GUI
 +
*
  
 
=Resources=
 
=Resources=
Line 667: Line 817:
 
===GitHub===
 
===GitHub===
 
* [https://idratherbewriting.com/learnapidoc/pubapis_github_desktop_client.html Tutorial about GitHub Desktop]
 
* [https://idratherbewriting.com/learnapidoc/pubapis_github_desktop_client.html Tutorial about GitHub Desktop]
 +
* [https://missing.csail.mit.edu/2020/version-control/ About version control] - a lecture from MIT
  
 
===Scala===
 
===Scala===
Line 672: Line 823:
 
* [http://www.tutorialspoint.com/scala/scala_if_else.htm Scala Conditionals]
 
* [http://www.tutorialspoint.com/scala/scala_if_else.htm Scala Conditionals]
 
* [https://www.tutorialspoint.com/scala/scala_data_types.htm Scala: Basic Types] - We'll primarily use Int, Double, Char, String, Boolean, and Unit
 
* [https://www.tutorialspoint.com/scala/scala_data_types.htm Scala: Basic Types] - We'll primarily use Int, Double, Char, String, Boolean, and Unit
 +
 +
* [https://www.playframework.com/ Play framework]
 +
 +
* [https://mvnrepository.com/ MVN Repository]
  
 
===IDE===
 
===IDE===
Line 681: Line 836:
 
===Misc===
 
===Misc===
 
* [https://app.sli.do/event/wkqtbios/live/questions Slido for Q&A sessions]
 
* [https://app.sli.do/event/wkqtbios/live/questions Slido for Q&A sessions]
 +
* [https://missing.csail.mit.edu/ The missing lecture at MIT] about basic tools and techniques for CS.
 +
 +
==For another time...==
 +
* [https://github.com/NARKOZ/hacker-scripts Personal automation examples]
 +
* Apollo 11, computer warnings 1201,1202 while landing - [https://qr.ae/TzsGtr story on Quora]

Revision as of 10:00, 14 February 2020

Introduction to Computer Science II

Shortcuts: Calendar | Assignments | Resources | Today (if there is a class)

Introduction

What is Computer Science?

Computer Science is the study of processes that interact with data and that can be represented as data in the form of programs. It enables the use of algorithms to manipulate, store, and communicate digital information.

Administrative information

Course Syllabus

Communication:

  • via slack: workspace name: bitl-cs2-2020
  • via email: use instructor's email address for personal communication
  • office hours: by appt.


Deliverables

Deliverables in this course include the following:

  • Lecture questions - due by midnight on the next day, unless otherwise specified.
  • Lab activities
  • Homework
  • Quizzes as scheduled on the calendar
  • Final exam

Calendar

Date Topic Deliverables

06.01.20

Course Introduction


Introduction to the course. Syllabus.

08.01.20

IDE Setup. Scala Introduction

Objective: Setup your IDE (IntelliJ) for Scala and Python development on your laptop and write a simple Scala program.

Reading/Reference:

10.01.20

Scala Types and Reading Files

Objective: Write a program that can read the lines of a file in a strongly typed language (Scala) and store values in a data structure

Reading/Reference:

13.01.20

Unit Testing

Objective: Test your own code without needing AutoLab

HW1 announced.

Reading/Reference:

15.01.20

Practice Unit Testing


17.01.20

Classes and Objects

Objective: Define and use classes

Reading/Reference:

  • Wikipedia: Class - Overview and reference (More detail than we'll cover in lecture)
  • Scala: Class - Application of Classes using Scala syntax
  • Python: Class - Application of Classes using Python syntax
  • Scala API - Reference for all Scala packages/classes/objects""

20.01.20

Model of Execution 1

Objective: Describe how the program stack and heap store values in your program

Reading/Reference:

22.01.20

Model of Execution 2

Objective: Use a debugger to see the state of your program during execution

Reading/Reference:

24.01.20

Physics Engine Quiz


HW2 announced.

27.01.20

Inheritance

Objective: You will be able to write abstract classes and concreted classes that inherent an abstract class

Reading/Reference:

29.01.20

Level 1 Quiz


  • Level 1 Quiz

31.01.20

Polymorphism and JSON

Objective: You will study polymorphism and apply it to use JSON in a strongly typed language

Reading/Reference:

03.02.20

Design Pattern: State Pattern 1

Objective: You will gain experience with the state design pattern to dynamically change the behavior of an object

Reading/Reference:

05.02.20

Design Pattern: State Pattern 2

Objective: Gain more familiarity with the state design pattern by reviewing the Jumper code

07.02.20

Design Pattern: State Pattern 3

Objective: Gain more familiarity with the state design pattern

10.02.20

GUI

Objective: Build desktop GUIs

Reading/Reference:

12.02.20

Design Architecture: MVC

Objective: Become familiar with the MVC architecture pattern and its benefits

Reading/Reference:

14.02.20

Calculator Quiz


HW3 announced.

17.02.20

Actors Introduction

Objective: Write programs with multiple pieces of code executing at the same time

Reading/Reference:

  • Lab Activity 5

19.02.20

Level 2 Quiz


  • Level 2 Quiz

21.02.20

Testing Actors and Database Connections

Objective: Write unit tests for actors and connect to a MySQL server

Reading/Reference:

24.02.20

Web Sockets 1

Objective: Enable 2-way communication between the browser and web server

Reading/Reference:

26.02.20

Web Sockets 2

Objective: Connect a Scala front end to a web socket server

Reading/Reference:

28.02.20

Actors Application with Web Sockets


02.03.20

MMO Architecture 1

Objective: See an example using the MMO architecture form this class

  • Lab Activity 6

04.03.20

MMO Architecture 2

Objective: Explore the MMO architecture applied to the course project

06.03.20

Clicker Quiz


HW4 announced.

  • Due HW3: Clicker

09.03.20

Custom Sorting with First-Order Functions

Objective: Explore custom sorting in scala and gain experience with function and type parameters

Reading/Reference:

  • Lab Activity 7

11.03.20

Level 3 Quiz


  • Level 3 Quiz

13.03.20

Merge Sort and Recursion

Objective: Gain an understanding of recursion combined with first-order functions and type parameters

Reading/Reference:

16.03.20

Linked List

Objective: Understand the structure of a linked list

Reading/Reference:

  • Lab Activity 8

18.03.20

Linked List Algorithms

Objective: Explore how various operations are performed on a linked list

Reading/Reference:

20.03.20

Stack and Queue

Objective: Use a linked list to implement the functionality of a stack and queue

Reading/Reference:

23.03.20

Binary Tree and Traversals

Objective: Gain familiarity with the structure of binary trees and how to traverse existing trees

Reading/Reference:

  • Lab Activity 9

25.03.20

Binary Search Tree

Objective: Explore an application of binary trees by using them for searching and sorting

Reading/Reference:

27.03.20

Genetic Algorithm Quiz


  • Due HW4: Genetic Algorithm

30.03.20

Graph Representations and Breath-First Search

Objective: Learn how to represent a graph in code and work with that representation

Reading/Reference:

  • Project Demo 3

01.04.20

Level 4 Quiz


  • Level 4 Quiz

03.04.20

Pathfinding with Breath-First Search

Objective: Find the shortest path between two nodes using BFS

06.04.20

Review and Examples


  • Project Demo 3 (alt)

08.04.20

MMO Quiz


  • HW5: MMO

10.04.20

Holiday


13.04.20

Holiday


15.04.20

Consultation week


17.04.20

Consultation week


  • HWb: Bonus Homework

20.04.20

(Exam week)


22.04.20

Exam week - Final Exam


  • Final Exam

24.04.20

(Exam week)


Assignments

Assignment due dates are in the calendar.

Assignments are announced by the course Slack channel.

Every lecture has a lecture question that is due by midnight the same day. Submitting you work should be done in the respective GitHub repositories, as published in Slack.

Homeworks

HW1

HW1 description - Physics Engine

HW2

HW2 description - Calculator

HW3

[#HW3 HW3 description]

HW4

[#HW4 HW4 description]

Projects

Resources

Look for resources in the calendar, after the lecture objectives.

GitHub

Scala

IDE

Algorithms

Misc

For another time...