Difference between revisions of "BITL-CS2"

From DiLab
Jump to: navigation, search
(Calendar)
(OOP)
 
(64 intermediate revisions by the same user not shown)
Line 1: Line 1:
__NOTOC__
+
{{TocRight}}
=Introduction to Computer Science II=
+
Introduction to Computer Science, part 2.
  
__NOTOC__
+
The goal of the course is to learn about software development using object oriented programming, functional programming, and relevant data structures and algorithms. The course is using Scala programming language.
<big>
 
'''Shortcuts:'''
 
[[#Calendar | Calendar]] |
 
[[#Assignments | Assignments]] |
 
[[#Resources | Resources]] |
 
</big>
 
[[#{{CURRENTDAY}}.{{CURRENTMONTH}}.{{CURRENTYEAR}} | Today (if there is a class)]]
 
  
=Introduction=
+
This page is used as a supplemental resource for the course.
  
What is Computer Science?
+
= Development tools =
* From [https://en.wikipedia.org/wiki/Computer_science Wikipedia]:
+
== Integrated development environment ==
:: 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.  
+
This course suggests using IntelliJ IDEA for development in Scala.
 +
* [https://www.jetbrains.com/idea/ IntelliJ IDEA] integrated development environment
 +
** [https://www.jetbrains.com/idea/download/ IntelliJ IDEA download link], community edition.
  
* A video version [https://www.youtube.com/watch?v=DIbtX0GqIA8 from Udacity]
+
== Git and GitHub version control system and project repository ==
 +
The students will use Git and GitHup as software code repositories. The assignments are submitted via GitHub Education.
 +
[https://git-scm.com/ GIT] version control system
 +
[https://github.com/ GitHub]
  
=Administrative information=
+
[https://rogerdudler.github.io/git-guide/ A simpleguide for getting started with git] - no deep *hit
Course Syllabus tba
 
<!-- [https://www.dropbox.com/s/aqbvmka49h9xowp/Syllabus.pdf?raw=1 is available here] -->
 
  
Communication:
+
== Build systems, Maven ==
* via slack: workspace name: bitl-cs2-2019
+
* [https://www.baeldung.com/ant-maven-gradle Comparison of And, Maven, and Gradle] build systems.
* via email: use instructor's email address for personal communication
 
* office hours: by appt.
 
  
=Calendar=
+
== Scala ==
 +
== Introduction to Scala ==
 +
* [https://www.scala-lang.org/ Scala programming language]
 +
* [https://www.geeksforgeeks.org/scala-programming-language/ About Scala] at Geeks for Geeks.
 +
:: ''"Scala is a general-purpose, high-level, multi-paradigm programming language. It is a pure object-oriented programming anguage which also provides support to the functional programming approach. Scala programs can convert to bytecodes and can un on the JVM (Java Virtual Machine)..."''
  
{| border=1 cellspacing=0 cellpadding=4
+
* [https://docs.scala-lang.org/tour/packages-and-imports.html Packages and imports]
|-
 
! Date
 
! Topic
 
! Exercises
 
|-
 
|
 
==== 06.01.20 ====
 
|
 
'''Course Introduction'''
 
  
Introduction to the course. [https://www.dropbox.com/s/gix0cxm82b1fgxj/Syllabus_CS2_2020-1.pdf?raw=1 Syllabus].
+
== Data types ==
|
+
* [https://docs.scala-lang.org/tutorials/FAQ/collections.html Data types in Scala]
 +
* [https://en.wikipedia.org/wiki/Double-precision_floating-point_format About Double precision data types] in general
  
|-
+
== OOP ==
|
+
* [https://stackify.com/oops-concepts-in-java/ OOP Concepts in Java] - at Stackify
==== 08.01.20 ====
+
* [https://www.baeldung.com/scala/oop-intro OOP intro in Scala] - at Baeldung
|
+
Polymorphism
'''IDE Setup. Scala Introduction'''
+
* [https://www.baeldung.com/scala/polymorphism Polymorphism in Scala] - at Baeldung
* [https://www.dropbox.com/s/mgo4xacl5gfheol/L01_Scala_intro_1.pdf?raw=1 Slides]
+
* [https://www.geeksforgeeks.org/scala-polymorphism/ Polymorphism in Scala] - at Geeksforgeeks
 +
* [https://www.geeksforgeeks.org/polymorphism-in-python/ Polymorphism in Python] - at Geeksforgeeks
  
Reading list:
+
== MVC ==
* [https://docs.scala-lang.org/tour/basics.html Scala Basics] - Except for classes, cases classes, and traits, for now.
+
* [https://www.youtube.com/watch?v=o_TH-Y78tt4&t=1667s The Principles of Clean Architecture by Uncle Bob Martin]
* [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
 
 
 
|
 
 
 
|-
 
|
 
==== 10.01.20 ====
 
|
 
'''Scala Types and Reading Files'''
 
* [https://www.dropbox.com/s/i1x8qeldz4skb9f/L02_Scala_intro_2.pdf?raw=1 Slides]
 
|
 
 
 
|-
 
|
 
==== 13.01.20 ====
 
|
 
'''TBD'''
 
|
 
* '''Lab Activity 1'''
 
 
 
|-
 
|
 
==== 15.01.20 ====
 
|
 
'''Unit Testing'''
 
|
 
 
 
|-
 
|
 
==== 17.01.20 ====
 
|
 
'''Classes and Objects'''
 
|
 
 
 
|-
 
|
 
==== 20.01.20 ====
 
|
 
'''Model of Execution 1'''
 
|
 
* '''Lab Activity 2'''
 
 
 
|-
 
|
 
==== 22.01.20 ====
 
|
 
'''Model of Execution 2'''
 
|
 
 
 
|-
 
|
 
==== 24.01.20 ====
 
|
 
'''Physics Engine Quiz'''
 
|
 
* '''HW1: Physics Engine'''
 
 
 
|-
 
|
 
==== 27.01.20 ====
 
|
 
'''Inheritance'''
 
|
 
* '''Lab Activity 3'''
 
 
 
|-
 
|
 
==== 29.01.20 ====
 
|
 
'''Level 1 Quiz'''
 
|
 
* '''Level 1 Quiz'''
 
 
 
|-
 
|
 
==== 31.01.20 ====
 
|
 
'''Polymorphism and JSON'''
 
|
 
 
 
|-
 
|
 
==== 03.02.20 ====
 
|
 
'''Design Pattern: State Pattern 1'''
 
 
 
Objective: You will gain experience with the state design pattern to dynamically change the
 
|
 
* Project Demo 1
 
 
 
|-
 
|
 
==== 05.02.20 ====
 
|
 
'''Design Pattern: State Pattern 2'''
 
 
 
behavior of an object
 
|
 
 
 
|-
 
|
 
==== 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
 
|
 
* '''Lab Activity 4'''
 
 
 
|-
 
|
 
==== 12.02.20 ====
 
|
 
'''Design Architecture: MVC'''
 
 
 
Objective: Become familiar with the MVC architecture pattern and its benefits
 
|
 
 
 
|-
 
|
 
==== 14.02.20 ====
 
|
 
'''Calculator Quiz'''
 
|
 
* '''HW2: Calculator'''
 
 
 
|-
 
|
 
==== 17.02.20 ====
 
|
 
'''Actors Introduction'''
 
 
 
Objective: Write programs with multiple pieces of code executing at the same time
 
|
 
* '''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
 
|
 
 
 
|-
 
|
 
==== 24.02.20 ====
 
|
 
'''Web Sockets 1'''
 
 
 
Objective: Enable 2-way communication between the browser and web server
 
|
 
* Project Demo 2
 
 
 
|-
 
|
 
==== 26.02.20 ====
 
|
 
'''Web Sockets 2'''
 
 
 
Objective: Connect a Scala front end to a web socket server
 
|
 
 
 
|-
 
|
 
==== 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'''
 
|
 
* '''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
 
|
 
* '''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
 
|
 
 
 
|-
 
|
 
==== 16.03.20 ====
 
|
 
'''Linked List'''
 
 
 
Objective: Understand the structure of a linked list
 
|
 
* '''Lab Activity 8'''
 
 
 
|-
 
|
 
==== 18.03.20 ====
 
|
 
'''Linked List Algorithms'''
 
 
 
Objective: Explore how various operations are performed on a linked list
 
|
 
 
 
|-
 
|
 
==== 20.03.20 ====
 
|
 
'''Stack and Queue'''
 
 
 
Objective: Use a linked list to implement the functionality of a stack and queue
 
|
 
 
 
|-
 
|
 
==== 23.03.20 ====
 
|
 
'''Binary Tree and Traversals'''
 
 
 
Objective: Gain familiarity with the structure of binary trees and how to traverse existing trees
 
|
 
* '''Lab Activity 9'''
 
 
 
|-
 
|
 
==== 25.03.20 ====
 
|
 
'''Binary Search Tree'''
 
 
 
Objective: Explore an application of binary trees by using them for searching and sorting
 
|
 
 
 
|-
 
|
 
==== 27.03.20 ====
 
|
 
'''Genetic Algorithm Quiz'''
 
|
 
* '''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
 
|
 
* 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=
 
TBD
 
 
 
=Resources=
 
 
 
===Scala===
 
* [https://docs.scala-lang.org/tour/basics.html Scala Basics] - (Except for classes, cases classes, and traits which will be covered later in the semester)
 
* [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
 
 
 
===IDE===
 
* [https://docs.scala-lang.org/getting-started-intellij-track/getting-started-with-scala-in-intellij.html Get started with Scala in IntelliJ]
 
 
 
===Algorithms===
 
* [https://www.youtube.com/watch?v=tPtvKYinUzc Visualisations of different sorting algorithms]
 
 
 
===Misc===
 
* [https://app.sli.do/event/wkqtbios/live/questions Slido for Q&A sessions]
 

Latest revision as of 08:59, 30 January 2023

Introduction to Computer Science, part 2.

The goal of the course is to learn about software development using object oriented programming, functional programming, and relevant data structures and algorithms. The course is using Scala programming language.

This page is used as a supplemental resource for the course.

Development tools

Integrated development environment

This course suggests using IntelliJ IDEA for development in Scala.

Git and GitHub version control system and project repository

The students will use Git and GitHup as software code repositories. The assignments are submitted via GitHub Education. GIT version control system GitHub

A simpleguide for getting started with git - no deep *hit

Build systems, Maven

Scala

Introduction to Scala

"Scala is a general-purpose, high-level, multi-paradigm programming language. It is a pure object-oriented programming anguage which also provides support to the functional programming approach. Scala programs can convert to bytecodes and can un on the JVM (Java Virtual Machine)..."

Data types

OOP

Polymorphism

MVC