Difference between revisions of "BITL-CS2"
(→24.01.20) |
(→Calendar) |
||
Line 34: | Line 34: | ||
! Date |
! Date |
||
! Topic |
! Topic |
||
! Assignments, tests, deliverables |
|||
! Exercises |
|||
|- |
|- |
||
| |
| |
||
Line 50: | Line 50: | ||
'''IDE Setup. Scala Introduction''' |
'''IDE Setup. Scala Introduction''' |
||
* [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] |
||
'''Objective:''' Setup your IDE (IntelliJ) for Scala and Python development on your laptop and write a simple Scala program |
|||
'''Reading/Reference''': |
|||
* [https://docs.scala-lang.org/tour/basics.html Scala Basics] - Except for classes, cases classes, and traits, for now. |
|||
* [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 |
|||
| |
| |
||
Line 86: | Line 78: | ||
'''Unit Testing''' |
'''Unit Testing''' |
||
* [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 |
|||
'''Reading/Reference''': |
|||
* [https://maven.apache.org/ Maven Homepage] - For reference only |
|||
* [https://www.dropbox.com/s/8z0k2pjjq8nij9c/pom.xml?dl=1 Example pom.xml] - You can copy this into your projects and expand it when needed |
|||
* [http://www.scalatest.org/ Scalatest Homepage] - For reference only |
|||
* [http://www.scalatest.org/getting_started_with_fun_suite Scalatest FunSuite Example] - A practical unit testing example |
|||
| |
| |
||
* |
* [https://docs.google.com/document/d/1SSlynEeirnk10dXY4-cGDysqfS673y8qNHBe8e2KpZE/edit?usp=sharing '''Lab Activity 1'''] |
||
|- |
|- |
||
Line 110: | Line 94: | ||
'''Classes and Objects''' |
'''Classes and Objects''' |
||
* [https://www.dropbox.com/s/wzljvj7tisf97gu/L04_Classes.pdf?raw=1 Slides] |
* [https://www.dropbox.com/s/wzljvj7tisf97gu/L04_Classes.pdf?raw=1 Slides] |
||
'''Objective''': Define and use classes |
|||
'''Reading/Reference''': |
|||
* [https://en.wikipedia.org/wiki/Class_(computer_programming) Wikipedia: Class] - Overview and reference (More detail than we'll cover in lecture) |
|||
* [https://docs.scala-lang.org/tour/classes.html Scala: Class] - Application of Classes using Scala syntax |
|||
* [https://www.w3schools.com/python/python_classes.asp Python: Class] - Application of Classes using Python syntax |
|||
* [https://www.scala-lang.org/api/2.12.9/ Scala API] - Reference for all Scala packages/classes/objects |
|||
| |
| |
||
Line 126: | Line 102: | ||
'''Model of Execution 1''' |
'''Model of Execution 1''' |
||
* [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] |
||
'''Objective''': Describe how the program stack and heap store values in your program |
|||
'''Reading/Reference''': |
|||
* [https://medium.com/@nickteixeira/stack-vs-heap-whats-the-difference-and-why-should-i-care-5abc78da1a88 Program Stack and Heap] |
|||
* [https://www.jetbrains.com/help/idea/run-debug-and-test-scala.html#debug_scala_code Debugging in IntelliJ] |
|||
| |
| |
||
* [https://docs.google.com/document/d/1ZV0MK5Gud959EAQVAUNWxAy7X09fQso0LA0o8oCAtnw/edit?usp=sharing '''Lab Activity 2'''] |
* [https://docs.google.com/document/d/1ZV0MK5Gud959EAQVAUNWxAy7X09fQso0LA0o8oCAtnw/edit?usp=sharing '''Lab Activity 2'''] |
||
Line 137: | Line 107: | ||
|- |
|- |
||
| |
| |
||
==== 22.01.20 ==== |
==== 22.01.20 ==== |
||
| |
| |
||
'''Model of Execution 2''' |
'''Model of Execution 2''' |
||
* [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] |
||
'''Objective''': Use a debugger to see the state of your program during execution |
|||
'''Reading/Reference''': |
|||
* [https://medium.com/basecs/a-deeper-inspection-into-compilation-and-interpretation-d98952ebc842 Compilers vs. Interpreters] - Scala/Java/C++ are compiled while Python/JavaScript are interpreted. What does this mean? |
|||
* [https://www.jetbrains.com/help/idea/run-debug-and-test-scala.html#debug_scala_code Debugging in IntelliJ] |
|||
| |
| |
||
Line 157: | Line 120: | ||
| |
| |
||
* '''HW1: Physics Engine''' |
* '''HW1: Physics Engine''' |
||
** [https://classroom.github.com/a/OKkJvJKw Link to GitHub] |
|||
|- |
|- |
||
| |
| |
||
==== 27.01.20 ==== |
==== 27.01.20 ==== |
||
| |
| |
||
'''Inheritance''' |
'''Inheritance''' |
||
* [https://www.dropbox.com/s/tc0hdxyhn2e78ej/L07_Inheritance.pdf?raw=1 Slides] |
* [https://www.dropbox.com/s/tc0hdxyhn2e78ej/L07_Inheritance.pdf?raw=1 Slides] |
||
'''Objective''': You will be able to write abstract classes and concreted classes that inherent an abstract class |
|||
'''Reading/Reference''': |
|||
* [https://www.geeksforgeeks.org/inheritance-in-scala/ Inheritance in Scala] |
|||
* [https://www.digitalocean.com/community/tutorials/understanding-class-inheritance-in-python-3 Inheritance in Python] |
|||
| |
| |
||
* '''Lab Activity 3''' |
* '''Lab Activity 3''' |
||
Line 189: | Line 144: | ||
'''Polymorphism and JSON''' |
'''Polymorphism and JSON''' |
||
* [https://www.dropbox.com/s/zimg0h83faqu6uy/L08_Polymorphism.pdf?raw=1 Slides] |
* [https://www.dropbox.com/s/zimg0h83faqu6uy/L08_Polymorphism.pdf?raw=1 Slides] |
||
'''Objective''': You will study polymorphism and apply it to use JSON in a strongly typed language |
|||
* [https://beginnersbook.com/2013/03/oops-in-java-encapsulation-inheritance-polymorphism-abstraction/ OOP Overview] |
|||
* [https://overiq.com/python-101/inheritance-and-polymorphism-in-python/ Polymorphism in Python] |
|||
* [https://dev.to/jmcclell/inheritance-vs-generics-vs-typeclasses-in-scala-20op Polymorphism in Scala] - Just the Subtype Polymorphism (Inheritance) section |
|||
* [https://www.playframework.com/documentation/2.7.x/ScalaJson Play JSON library documentation] |
|||
* [https://mvnrepository.com/artifact/com.typesafe.play/play-json_2.12/2.7.1 Play JSON Maven artifact] |
|||
* [https://github.com/scalaj/scalaj-http scalaj-http library4] |
|||
| |
| |
||
Line 204: | Line 151: | ||
| |
| |
||
'''Design Pattern: State Pattern 1''' |
'''Design Pattern: State Pattern 1''' |
||
Objective: You will gain experience with the state design pattern to dynamically change the |
|||
| |
| |
||
* Project Demo 1 |
* '''Project Demo 1''' |
||
|- |
|- |
||
Line 214: | Line 159: | ||
| |
| |
||
'''Design Pattern: State Pattern 2''' |
'''Design Pattern: State Pattern 2''' |
||
behavior of an object |
|||
| |
| |
||
Line 223: | Line 166: | ||
| |
| |
||
'''Design Pattern: State Pattern 3''' |
'''Design Pattern: State Pattern 3''' |
||
Objective: Gain more familiarity with the state design pattern |
|||
| |
| |
||
Line 232: | Line 173: | ||
| |
| |
||
'''GUI''' |
'''GUI''' |
||
Objective: Build desktop GUIs |
|||
| |
| |
||
* '''Lab Activity 4''' |
* '''Lab Activity 4''' |
||
Line 242: | Line 181: | ||
| |
| |
||
'''Design Architecture: MVC''' |
'''Design Architecture: MVC''' |
||
Objective: Become familiar with the MVC architecture pattern and its benefits |
|||
| |
| |
||
Line 259: | Line 196: | ||
| |
| |
||
'''Actors Introduction''' |
'''Actors Introduction''' |
||
Objective: Write programs with multiple pieces of code executing at the same time |
|||
| |
| |
||
* '''Lab Activity 5''' |
* '''Lab Activity 5''' |
||
Line 277: | Line 212: | ||
| |
| |
||
'''Testing Actors and Database Connections''' |
'''Testing Actors and Database Connections''' |
||
Objective: Write unit tests for actors and connect to a MySQL server |
|||
| |
| |
||
Line 286: | Line 219: | ||
| |
| |
||
'''Web Sockets 1''' |
'''Web Sockets 1''' |
||
Objective: Enable 2-way communication between the browser and web server |
|||
| |
| |
||
* Project Demo 2 |
* '''Project Demo 2''' |
||
|- |
|- |
||
Line 296: | Line 227: | ||
| |
| |
||
'''Web Sockets 2''' |
'''Web Sockets 2''' |
||
Objective: Connect a Scala front end to a web socket server |
|||
| |
| |
||
Line 312: | Line 241: | ||
| |
| |
||
'''MMO Architecture 1''' |
'''MMO Architecture 1''' |
||
Objective: See an example using the MMO architecture form this class |
|||
| |
| |
||
* '''Lab Activity 6''' |
* '''Lab Activity 6''' |
||
Line 322: | Line 249: | ||
| |
| |
||
'''MMO Architecture 2''' |
'''MMO Architecture 2''' |
||
Objective: Explore the MMO architecture applied to the course project |
|||
| |
| |
||
Line 339: | Line 264: | ||
| |
| |
||
'''Custom Sorting with First-Order Functions''' |
'''Custom Sorting with First-Order Functions''' |
||
Objective: Explore custom sorting in scala and gain experience with function and type parameters |
|||
| |
| |
||
* '''Lab Activity 7''' |
* '''Lab Activity 7''' |
||
Line 357: | Line 280: | ||
| |
| |
||
'''Merge Sort and Recursion''' |
'''Merge Sort and Recursion''' |
||
Objective: Gain an understanding of recursion combined with first-order functions and type parameters |
|||
| |
| |
||
Line 366: | Line 287: | ||
| |
| |
||
'''Linked List''' |
'''Linked List''' |
||
Objective: Understand the structure of a linked list |
|||
| |
| |
||
* '''Lab Activity 8''' |
* '''Lab Activity 8''' |
||
Line 376: | Line 295: | ||
| |
| |
||
'''Linked List Algorithms''' |
'''Linked List Algorithms''' |
||
Objective: Explore how various operations are performed on a linked list |
|||
| |
| |
||
Line 385: | Line 302: | ||
| |
| |
||
'''Stack and Queue''' |
'''Stack and Queue''' |
||
Objective: Use a linked list to implement the functionality of a stack and queue |
|||
| |
| |
||
Line 394: | Line 309: | ||
| |
| |
||
'''Binary Tree and Traversals''' |
'''Binary Tree and Traversals''' |
||
Objective: Gain familiarity with the structure of binary trees and how to traverse existing trees |
|||
| |
| |
||
* '''Lab Activity 9''' |
* '''Lab Activity 9''' |
||
Line 404: | Line 317: | ||
| |
| |
||
'''Binary Search Tree''' |
'''Binary Search Tree''' |
||
Objective: Explore an application of binary trees by using them for searching and sorting |
|||
| |
| |
||
Line 421: | Line 332: | ||
| |
| |
||
'''Graph Representations and Breath-First Search''' |
'''Graph Representations and Breath-First Search''' |
||
Objective: Learn how to represent a graph in code and work with that representation |
|||
| |
| |
||
* Project Demo 3 |
* '''Project Demo 3''' |
||
|- |
|- |
||
Line 439: | Line 348: | ||
| |
| |
||
'''Pathfinding with Breath-First Search''' |
'''Pathfinding with Breath-First Search''' |
||
Objective: Find the shortest path between two nodes using BFS |
|||
| |
| |
||
Line 449: | Line 356: | ||
'''Review and Examples''' |
'''Review and Examples''' |
||
| |
| |
||
* Project Demo 3 (alt) |
* '''Project Demo 3 (alt)''' |
||
|- |
|- |
Revision as of 21:03, 21 January 2020
Introduction to Computer Science II
Shortcuts: Calendar | Assignments | Resources | Today (if there is a class)
Introduction
What is Computer Science?
- From Wikipedia:
- 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.
- A video version from Udacity
Administrative information
Course Syllabus tba
Communication:
- via slack: workspace name: bitl-cs2-2019
- via email: use instructor's email address for personal communication
- office hours: by appt.
Calendar
Date | Topic | Assignments, tests, deliverables |
---|---|---|
06.01.20 |
Course Introduction Introduction to the course. Syllabus. |
|
08.01.20 |
IDE Setup. Scala Introduction |
|
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 |
|
15.01.20 |
Practice Unit Testing |
|
17.01.20 |
Classes and Objects |
|
20.01.20 |
Model of Execution 1 |
|
22.01.20 |
Model of Execution 2 |
|
24.01.20 |
Physics Engine Quiz |
|
27.01.20 |
Inheritance |
|
29.01.20 |
Level 1 Quiz |
|
31.01.20 |
Polymorphism and JSON |
|
03.02.20 |
Design Pattern: State Pattern 1 |
|
05.02.20 |
Design Pattern: State Pattern 2 |
|
07.02.20 |
Design Pattern: State Pattern 3 |
|
10.02.20 |
GUI |
|
12.02.20 |
Design Architecture: MVC |
|
14.02.20 |
Calculator Quiz |
|
17.02.20 |
Actors Introduction |
|
19.02.20 |
Level 2 Quiz |
|
21.02.20 |
Testing Actors and Database Connections |
|
24.02.20 |
Web Sockets 1 |
|
26.02.20 |
Web Sockets 2 |
|
28.02.20 |
Actors Application with Web Sockets |
|
02.03.20 |
MMO Architecture 1 |
|
04.03.20 |
MMO Architecture 2 |
|
06.03.20 |
Clicker Quiz |
|
09.03.20 |
Custom Sorting with First-Order Functions |
|
11.03.20 |
Level 3 Quiz |
|
13.03.20 |
Merge Sort and Recursion |
|
16.03.20 |
Linked List |
|
18.03.20 |
Linked List Algorithms |
|
20.03.20 |
Stack and Queue |
|
23.03.20 |
Binary Tree and Traversals |
|
25.03.20 |
Binary Search Tree |
|
27.03.20 |
Genetic Algorithm Quiz |
|
30.03.20 |
Graph Representations and Breath-First Search |
|
01.04.20 |
Level 4 Quiz |
|
03.04.20 |
Pathfinding with Breath-First Search |
|
06.04.20 |
Review and Examples |
|
08.04.20 |
MMO Quiz |
|
10.04.20 |
Holiday |
|
13.04.20 |
Holiday |
|
15.04.20 |
Consultation week |
|
17.04.20 |
Consultation week |
|
20.04.20 |
(Exam week) |
|
22.04.20 |
Exam week - Final Exam |
|
24.04.20 |
(Exam week) |
|
Assignments
TBD
Resources
GitHub
Scala
- Scala Basics - (Except for classes, cases classes, and traits which will be covered later in the semester)
- Scala Conditionals
- Scala: Basic Types - We'll primarily use Int, Double, Char, String, Boolean, and Unit