Difference between revisions of "BITL-CS2"
(→Tests) |
(→GitHub) |
||
(11 intermediate revisions by the same user not shown) | |||
Line 32: | Line 32: | ||
* [https://forms.gle/4jhSre18yhSyUtLV6 Homework Quiz 1] | * [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 style = "border-color: #ddd;" | + | {| border=1 cellspacing=0 cellpadding=4 style = ""border-color: #ddd;"" |
|- | |- | ||
! Date | ! Date | ||
! Topic | ! Topic | ||
− | ! | + | ! Deliverables |
|- | |- | ||
| | | | ||
Line 252: | Line 260: | ||
|<big>'''Design Pattern: State Pattern 1'''</big> | |<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 259: | Line 268: | ||
| | | | ||
− | * '''Due Project Demo 1''' | + | * [https://docs.google.com/document/d/18mxVo3_T0WmFWljXpsOZ88h52fFtdL6JmpbUFFW1Pi0/edit?usp=sharing '''Due Project Demo 1'''] |
|- | |- | ||
Line 268: | Line 277: | ||
|<big>'''Design Pattern: State Pattern 2'''</big> | |<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 280: | Line 290: | ||
|<big>'''Design Pattern: State Pattern 3'''</big> | |<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 292: | Line 303: | ||
|<big>'''GUI'''</big> | |<big>'''GUI'''</big> | ||
|} | |} | ||
+ | * [https://www.dropbox.com/s/wep3zxfptwlevdt/L12_GUI.pdf?raw=1 Slides] | ||
'''Objective''': Build desktop GUIs | '''Objective''': Build desktop GUIs | ||
Line 304: | Line 316: | ||
| | | | ||
− | * '''Lab Activity 4''' | + | * [https://docs.google.com/document/d/16khfhVph_5_bsYSeMXmGz0r3ydGMP-Vp3zkJWR3klMs/edit?usp=sharing '''Lab Activity 4'''] |
|- | |- | ||
Line 313: | Line 325: | ||
|<big>'''Design Architecture: MVC'''</big> | |<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 343: | Line 356: | ||
|<big>'''Actors Introduction'''</big> | |<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 374: | Line 388: | ||
|<big>'''Testing Actors and Database Connections'''</big> | |<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 397: | Line 412: | ||
|<big>'''Web Sockets 1'''</big> | |<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 405: | Line 421: | ||
| | | | ||
− | * '''Due Project Demo 2''' | + | * [https://docs.google.com/document/d/1-Rpz1nUcWKTzMJVYDwFKj6Nq8qgy5YFlpFDxDXRZVlQ/edit?usp=sharing '''Due Project Demo 2'''] |
|- | |- | ||
Line 414: | Line 430: | ||
|<big>'''Web Sockets 2'''</big> | |<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 430: | Line 447: | ||
|<big>'''Actors Application with Web Sockets'''</big> | |<big>'''Actors Application with Web Sockets'''</big> | ||
|} | |} | ||
+ | * [https://www.dropbox.com/s/mfvgrlyavg2u0e1/L18_WebSocket_App.pdf?raw=1 Slides] | ||
Line 441: | Line 459: | ||
|<big>'''MMO Architecture 1'''</big> | |<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 454: | Line 473: | ||
|<big>'''MMO Architecture 2'''</big> | |<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 775: | Line 795: | ||
== Homeworks == | == Homeworks == | ||
===HW1=== | ===HW1=== | ||
− | [https://docs.google.com/document/d/1rrq5WjyOwupKH3GigH7crZ6elXv2ggZoSGrnP9hEMKU/view HW1 description] | + | [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] --> | <!-- [https://docs.google.com/document/d/1rrq5WjyOwupKH3GigH7crZ6elXv2ggZoSGrnP9hEMKU/view#heading=h.4012eaop3dxl HW1 description] --> | ||
===HW2=== | ===HW2=== | ||
− | [https://docs.google.com/document/d/1Kjo2nRqKAXY8JJaXxtAJY27RaS-_XnwNzOk3ekOjlZY/edit?usp=sharing HW2 description] | + | [https://docs.google.com/document/d/1Kjo2nRqKAXY8JJaXxtAJY27RaS-_XnwNzOk3ekOjlZY/edit?usp=sharing HW2 description] - Calculator |
===HW3=== | ===HW3=== | ||
Line 786: | Line 806: | ||
===HW4=== | ===HW4=== | ||
[#HW4 HW4 description] | [#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 792: | 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 797: | 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 806: | 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?
- 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-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 |
|
||
08.01.20 |
Objective: Setup your IDE (IntelliJ) for Scala and Python development on your laptop and write a simple Scala program. Reading/Reference:
|
||
10.01.20 |
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 |
Objective: Test your own code without needing AutoLab HW1 announced. Reading/Reference:
|
||
15.01.20 |
|
||
17.01.20 |
Objective: Define and use classes Reading/Reference:
|
||
20.01.20 |
Objective: Describe how the program stack and heap store values in your program Reading/Reference: |
||
22.01.20 |
Objective: Use a debugger to see the state of your program during execution Reading/Reference:
|
||
24.01.20 |
|
||
27.01.20 |
Objective: You will be able to write abstract classes and concreted classes that inherent an abstract class Reading/Reference: |
||
29.01.20 |
|
| |
31.01.20 |
Objective: You will study polymorphism and apply it to use JSON in a strongly typed language Reading/Reference:
|
||
03.02.20 |
Objective: You will gain experience with the state design pattern to dynamically change the behavior of an object Reading/Reference: |
||
05.02.20 |
Objective: Gain more familiarity with the state design pattern by reviewing the Jumper code |
||
07.02.20 |
Objective: Gain more familiarity with the state design pattern |
||
10.02.20 |
Objective: Build desktop GUIs Reading/Reference:
|
||
12.02.20 |
Objective: Become familiar with the MVC architecture pattern and its benefits Reading/Reference: |
||
14.02.20 |
|
||
17.02.20 |
Objective: Write programs with multiple pieces of code executing at the same time Reading/Reference: |
| |
19.02.20 |
|
| |
21.02.20 |
Objective: Write unit tests for actors and connect to a MySQL server Reading/Reference: |
||
24.02.20 |
Objective: Enable 2-way communication between the browser and web server Reading/Reference: |
||
26.02.20 |
Objective: Connect a Scala front end to a web socket server Reading/Reference: |
||
28.02.20 |
|
||
02.03.20 |
Objective: See an example using the MMO architecture form this class |
| |
04.03.20 |
Objective: Explore the MMO architecture applied to the course project |
||
06.03.20 |
|
| |
09.03.20 |
Objective: Explore custom sorting in scala and gain experience with function and type parameters Reading/Reference: |
| |
11.03.20 |
|
| |
13.03.20 |
Objective: Gain an understanding of recursion combined with first-order functions and type parameters Reading/Reference: |
||
16.03.20 |
Objective: Understand the structure of a linked list Reading/Reference: |
| |
18.03.20 |
Objective: Explore how various operations are performed on a linked list Reading/Reference:
|
||
20.03.20 |
Objective: Use a linked list to implement the functionality of a stack and queue Reading/Reference: |
||
23.03.20 |
Objective: Gain familiarity with the structure of binary trees and how to traverse existing trees Reading/Reference: |
| |
25.03.20 |
Objective: Explore an application of binary trees by using them for searching and sorting Reading/Reference: |
||
27.03.20 |
|
| |
30.03.20 |
Objective: Learn how to represent a graph in code and work with that representation Reading/Reference: |
| |
01.04.20 |
|
| |
03.04.20 |
Objective: Find the shortest path between two nodes using BFS |
||
06.04.20 |
|
| |
08.04.20 |
|
| |
10.04.20 |
|
||
13.04.20 |
|
||
15.04.20 |
|
||
17.04.20 |
|
| |
20.04.20 |
|
||
22.04.20 |
|
| |
24.04.20 |
|
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
- Project1 description - JRPG
- Project2 description - JRPG GUI
Resources
Look for resources in the calendar, after the lecture objectives.
GitHub
- Tutorial about GitHub Desktop
- About version control - a lecture from MIT
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
IDE
Algorithms
Misc
- Slido for Q&A sessions
- The missing lecture at MIT about basic tools and techniques for CS.
For another time...
- Personal automation examples
- Apollo 11, computer warnings 1201,1202 while landing - story on Quora