BITL-CS2
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
Communication:
- via slack: workspace name: bitl-cs2-2019
- via email: use instructor's email address for personal communication
- office hours: by appt.
Tests
Calendar
Date | Topic | Assignments, tests, deliverables |
---|---|---|
06.01.20 |
Course Introduction
|
|
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 Reading/Reference:
|
|
15.01.20 |
Practice Unit Testing
|
|
17.01.20 |
Classes and Objects Objective: Define and use classes Reading/Reference:
|
|
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
|
|
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
|
|
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
|
|
17.02.20 |
Actors Introduction Objective: Write programs with multiple pieces of code executing at the same time Reading/Reference: |
|
19.02.20 |
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 |
|
04.03.20 |
MMO Architecture 2 Objective: Explore the MMO architecture applied to the course project |
|
06.03.20 |
Clicker Quiz
|
|
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: |
|
11.03.20 |
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: |
|
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: |
|
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
|
|
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: |
|
01.04.20 |
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
|
|
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
Assignment due dates are in the calendar.
Assignments are announced by the course Slack channel.
Resources
Look for resources in the calendar, after the lecture objectives.
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