Difference between revisions of "BITL-CS1"
(→Resources) |
|||
(27 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
__NOTOC__ |
__NOTOC__ |
||
{{pagebreak}} |
|||
=Introduction to Computer Science 1= |
|||
Course: Introduction to Computer Science CS1 (BITL). |
|||
__NOTOC__ |
|||
<big> |
|||
'''Shortcuts:''' |
|||
[[#Calendar | Calendar]] | |
|||
[[#Assignments | Assignments]] | |
|||
[[#Resources | Resources]] | |
|||
</big> |
|||
[[#{{CURRENTDAY}}.{{CURRENTMONTH}}.{{CURRENTYEAR}} | Today (if there is a class)]] |
|||
Please follow eStudijas/ORTUS for the updates. |
|||
=Introduction= |
|||
{{pagebreak}} |
|||
What is Computer Science? |
|||
* From [https://en.wikipedia.org/wiki/Computer_science 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. |
|||
{{BITL_CS1_Resources}} |
|||
* A video version [https://www.youtube.com/watch?v=DIbtX0GqIA8 from Udacity] |
|||
=Administrative information= |
|||
Course Syllabus [https://www.dropbox.com/s/aqbvmka49h9xowp/Syllabus.pdf?raw=1 is available here] |
|||
Communication: |
|||
* via slack: workspace name: bitl-cs1-2019 |
|||
* via email: use instructor's email address for personal communication |
|||
* office hours: by appt. |
|||
=Calendar= |
|||
{| border=1 cellspacing=0 cellpadding=4 |
|||
|- |
|||
! Date |
|||
! Topic |
|||
! Exercises |
|||
|- |
|||
| |
|||
==== 09.09.19 ==== |
|||
| |
|||
'''Course overview''' |
|||
Introduction to the course. Syllabus. What is computer science. Branches of computer science. Binary encoding. Abstraction. Data. Algorithms. Search using linear, skip and binary approach. Correctness and complexity of an algorithm. |
|||
* [https://www.dropbox.com/s/p2p5mfwgxmt6ebs/L01_introduction_to_CS.pdf?dl=0 Slides] |
|||
| |
|||
Write a pseudo code for binary search algorithm, in the context of a dictionary or a phone book. |
|||
|- |
|||
| |
|||
==== 10.09.19 ==== |
|||
| |
|||
'''Expressions''' |
|||
Algorithms revisited. iterative v.s. recursive algorithm, binary search example in both versions. |
|||
Life cycle of program development. Source code. Compiler v.s. interpreter. Integrated development environment. |
|||
Python programming language. Python version 3 vs version 2. |
|||
Expressions, evaluation of expressions. Operators and their precedence. |
|||
* [https://www.dropbox.com/s/9gk545is1q3jy7j/L02_expressions_literals.pdf?dl=0 Slides] |
|||
| |
|||
* Explore the online IDE: [http://repl.it/languages/python3 repl.it]. |
|||
* Read about Anaconda environment. |
|||
|- |
|||
| |
|||
==== 12.09.19 ==== |
|||
| |
|||
'''Variables and assignment''' |
|||
Python: variables. Statements. Assignment. Data types. |
|||
* [https://www.dropbox.com/s/scmhpox9pf62hk8/L03_variables_assignment.pdf?dl=0 Slides] |
|||
| |
|||
Find out why 123_456 is a valid expression in Python, and what does it mean. |
|||
|- |
|||
| |
|||
==== 16.09.19 ==== |
|||
| |
|||
'''Functions (calling)''' |
|||
Python: functions. Purpose and uses. Calling functions. Libraries, ""import math"" statement. |
|||
* [https://www.dropbox.com/s/70xilodu2mqi28n/L04_functions_calling_python.pdf?dl=0 Slides] |
|||
| |
|||
Practice writing functions: |
|||
* A sum of two numbers |
|||
* A greeter function with the name as a parameter |
|||
* A signature (-1,0,+1) function |
|||
|- |
|||
| |
|||
==== 17.09.19 ==== |
|||
| |
|||
'''Functions (defining)''' |
|||
Python: functions. Defining functions. Function body. The use of indentation in Python. |
|||
* [https://www.dropbox.com/s/b1g3fg08dc898m5/L05_functions_defining_python.pdf?dl=0 Slides] |
|||
| |
|||
|- |
|||
| |
|||
==== 19.09.19 ==== |
|||
| |
|||
'''Relational and boolean expressions''' |
|||
Boolean and comparison operators. |
|||
* [https://www.dropbox.com/s/cf14dkw07nhnf1j/L06_expressions_boolean.pdf?dl=0 Slides] |
|||
| |
|||
|- |
|||
| |
|||
==== 23.09.19 ==== |
|||
| |
|||
'''Control flow (conditionals)''' |
|||
Control flow: if / if-else / if-elif-else. |
|||
* [https://www.dropbox.com/s/4ablnnzjqczlbmb/L07_flow_control_if-else-elif.pdf?dl=0 Slides] |
|||
| |
|||
* Lab Assignment 1 |
|||
|- |
|||
| |
|||
==== 24.09.19 ==== |
|||
| |
|||
'''Control flow in functions''' |
|||
* [https://www.dropbox.com/s/1glgt1ug1xn0yrc/L08_floc_control_examples.pdf?dl=0 Slides] |
|||
| |
|||
|- |
|||
| |
|||
==== 26.09.19 ==== |
|||
| |
|||
'''Javascript 1''' |
|||
* [https://www.dropbox.com/s/1mczs8ggt1j09is/L09_Javascript-1?dl=0 Slides] |
|||
| |
|||
|- |
|||
| |
|||
==== 30.09.19 ==== |
|||
| |
|||
'''Javascript 2''' |
|||
* [https://www.dropbox.com/s/glzojanm86i3aqh/L10_Javascript-2?dl=0 Slides] |
|||
| |
|||
|- |
|||
| |
|||
==== 01.10.19 ==== |
|||
| |
|||
'''Javascript 3''' |
|||
* [https://www.dropbox.com/s/pxpyzu97ljbo6m7/L11_Javascript-3?dl=0 Slides] |
|||
| |
|||
* '''Lab exam 01''' |
|||
|- |
|||
| |
|||
==== 03.10.19 ==== |
|||
| |
|||
'''Arrays and for loop''' |
|||
* [https://www.dropbox.com/s/b7spkl5ti37c9xe/L12_arrays_for_loop_JS.pdf?dl=0 Slides] |
|||
| |
|||
|- |
|||
| |
|||
==== 07.10.19 ==== |
|||
| |
|||
'''Range (PY) and for..in (JS)''' |
|||
* [https://www.dropbox.com/s/fp4gcjixaughika/L13_python_range_js_foreach.pdf?dl=0 Slides] |
|||
| |
|||
|- |
|||
| |
|||
==== 08.10.19 ==== |
|||
| |
|||
'''Lists (PY)''' |
|||
* [https://www.dropbox.com/s/hkkmfajempudzbj/L14_list_coding_pattern.pdf?dl=0 Slides] |
|||
| |
|||
|- |
|||
| |
|||
==== 10.10.19 ==== |
|||
| |
|||
'''Dictionaries intro (PY)''' |
|||
* [https://www.dropbox.com/s/jg9q84ipc1l5487/L15_dictionaries_1.pdf?dl=0 Slides] |
|||
| |
|||
|- |
|||
| |
|||
==== 14.10.19 ==== |
|||
| |
|||
'''Dictionaries continued (JS) 1''' |
|||
* [https://www.dropbox.com/s/y8ad93pnn2cc9c1/L16_dictionaries_2.pdf?dl=0 Slides] |
|||
| |
|||
|- |
|||
| |
|||
==== 15.10.19 ==== |
|||
| |
|||
'''Dictionaries continued (JS) 2''' |
|||
* [https://www.dropbox.com/s/nuszon5hpifaxvt/L17_dictionaries_3.pdf?dl=0 Slides] |
|||
| |
|||
|- |
|||
| |
|||
==== 17.10.19 ==== |
|||
| |
|||
'''File reading (PY)''' |
|||
* [https://www.dropbox.com/s/dx2lr8su03cm181/L18_file_reading_1.pdf?dl=0 Slides] |
|||
| |
|||
|- |
|||
| |
|||
==== 21.10.19 ==== |
|||
| |
|||
'''Parsing data (csv, PY)''' |
|||
* [https://www.dropbox.com/s/j0hr3yj7x02yup9/L19_file_reading_2.pdf?dl=0 Slides] |
|||
| |
|||
|- |
|||
| |
|||
==== 22.10.19 ==== |
|||
| |
|||
'''File writing (PY)''' |
|||
* [https://www.dropbox.com/s/slk0zw4pa01t9kj/L20_file_writing.pdf?dl=0 Slides] |
|||
| |
|||
* [https://docs.google.com/document/d/1zMkzdEQFe_vbf2_TGBesIVjZHgBmSLtXnbj5KoyEmjE/view Project 1] announced |
|||
|- |
|||
| |
|||
==== 24.10.19 ==== |
|||
| |
|||
'''Q & A session''' |
|||
| |
|||
|- |
|||
| |
|||
==== 28.10.19 ==== |
|||
| |
|||
'''HTML and Javascript''' |
|||
* [https://www.dropbox.com/s/psouofoho27tn0k/L21_HTML_Javascript.pdf?dl=0 Slides] |
|||
| |
|||
|- |
|||
| |
|||
==== 29.10.19 ==== |
|||
| |
|||
'''URIs and network connections''' |
|||
* [https://www.dropbox.com/s/59do1325xa1yoa6/L22_JS_libraries.pdf?dl=0 Slides] |
|||
| |
|||
|- |
|||
| |
|||
==== 31.10.19 ==== |
|||
| |
|||
'''A web server (PY)''' |
|||
* [https://www.dropbox.com/s/bwhp6o3ozx633va/L23_Python_web_server.pdf?dl=0 Slides] |
|||
| |
|||
* '''Lab exam 02''' |
|||
|- |
|||
| |
|||
==== 04.11.19 ==== |
|||
| |
|||
'''Midterm review''' |
|||
* [https://www.dropbox.com/s/0rs4fisdmo2s3sw/L25_MidtermReview.pdf?dl=0 Slides] |
|||
| |
|||
|- |
|||
| |
|||
==== 05.11.19 ==== |
|||
| |
|||
'''Midterm exam''' |
|||
| |
|||
* '''Midterm exam''' |
|||
|- |
|||
| |
|||
==== 07.11.19 ==== |
|||
| |
|||
'''''' |
|||
| |
|||
|- |
|||
| |
|||
==== 11.11.19 ==== |
|||
| |
|||
'''JSON and AJAX introduction''' |
|||
* [https://www.dropbox.com/s/a1hziukg463jmn6/L26_AJAX_1.pdf?dl=0 Slides] |
|||
| |
|||
|- |
|||
| |
|||
==== 12.11.19 ==== |
|||
| |
|||
'''AJAX, Chat app''' |
|||
* [https://www.dropbox.com/s/3i5vk84hsv9hsn2/L27_AJAX_2.pdf?dl=0 Slides] |
|||
| |
|||
|- |
|||
| |
|||
==== 14.11.19 ==== |
|||
| |
|||
'''Midterm analysis''' |
|||
| |
|||
* '''Lab Exam 03''' |
|||
|- |
|||
| |
|||
==== 18.11.19 ==== |
|||
| style='background-color:#ffcccc;' | |
|||
'''--- National holiday ---''' |
|||
| |
|||
|- |
|||
| |
|||
==== 19.11.19 ==== |
|||
| |
|||
'''AJAX, GET/POST review''' |
|||
* [https://www.dropbox.com/s/0etweybz777jz8j/L28_MusicRatingApp.pdf?dl=0 Slides] |
|||
Music rater app, version 1 |
|||
* [https://www.dropbox.com/sh/08671p5n3hbl3ka/AADrn_ce7PVqsMYkrEjXOb-Xa?dl=0 V1 source code] |
|||
| |
|||
|- |
|||
| |
|||
==== 21.11.19 ==== |
|||
| |
|||
'''Search and sort''' |
|||
* [https://www.dropbox.com/s/3l6rr3f1myv98b2/L29_Search_and_sort.pdf?dl=0 Slides] |
|||
| |
|||
|- |
|||
| |
|||
==== 25.11.19 ==== |
|||
| |
|||
'''Sorting and custom sort''' |
|||
* [https://www.dropbox.com/s/hex28lnpn0y1tm7/L30_Sorting.pdf?dl=0 Slides] |
|||
| |
|||
* Project 1 due |
|||
* Project 2 announced |
|||
|- |
|||
| |
|||
==== 26.11.19 ==== |
|||
| |
|||
'''Database''' |
|||
* [https://www.dropbox.com/s/kjzib774q6c9ip4/L31_DataBases.pdf?dl=0 Slides] |
|||
| |
|||
* '''Lab Exam 04''' |
|||
|- |
|||
| |
|||
==== 28.11.19 ==== |
|||
| |
|||
'''Database application''' |
|||
* [https://www.dropbox.com/s/lw5hrp0iwhb3dct/L32_DataBaseApp.pdf?dl=0 Slides] |
|||
| |
|||
|- |
|||
| |
|||
==== 02.12.19 ==== |
|||
| |
|||
'''SQL and SQL injection''' |
|||
* [https://www.dropbox.com/s/6ct8bjfbd09616x/L33_SQL_injection.pdf?dl=0 Slides] |
|||
| |
|||
|- |
|||
| |
|||
==== 03.12.19 ==== |
|||
| |
|||
'''Encryption and Hashing''' |
|||
* [https://www.dropbox.com/s/d5yknr3125x211x/L34_Encryption.pdf?dl=0 Slides] |
|||
| |
|||
|- |
|||
| |
|||
==== 05.12.19 ==== |
|||
| |
|||
'''Designing the application''' |
|||
* [https://www.dropbox.com/s/hg2rlzp0ri5zx1n/L35_DesigningTheApp.pdf?dl=0 Slides] |
|||
| |
|||
|- |
|||
| |
|||
==== 09.12.19 ==== |
|||
| |
|||
'''Passwords and session''' |
|||
* [https://www.dropbox.com/s/msoqxdcaeruesql/L36_Paswords_Session.pdf?dl=0 Slides] |
|||
| |
|||
|- |
|||
| |
|||
==== 10.12.19 ==== |
|||
| |
|||
'''TBD''' |
|||
| |
|||
|- |
|||
| |
|||
==== 12.12.19 ==== |
|||
| |
|||
'''Final review''' |
|||
| |
|||
* Project 2 due |
|||
|- |
|||
| |
|||
==== 16.12.19 ==== |
|||
| style='background-color:#ffcccc;' | |
|||
'''--- EXAM week starts ---''' |
|||
| |
|||
|- |
|||
| |
|||
==== 17.12.19 ==== |
|||
| |
|||
'''Final exam''' |
|||
| |
|||
* '''Final Exam''' |
|||
|- |
|||
| |
|||
|} |
|||
=Assignments= |
|||
==Project 1== |
|||
[https://docs.google.com/document/d/1zMkzdEQFe_vbf2_TGBesIVjZHgBmSLtXnbj5KoyEmjE/view The project 1 description is available here] |
|||
==Project 2== |
|||
[https://docs.google.com/document/d/1moNcB7zsRaFPdHQFGi2tkq9IT7ta_aqHusfcz9yefqo/view The project 2 description is available here] |
|||
=Resources= |
|||
* [https://docs.python.org/3/reference/ The Python Language Reference] |
|||
* [https://docs.python.org/3/library/ The Python Standard Library] |
|||
* [https://www.zentut.com/sql-tutorial/ SQL tutorial] at zentut.com |
|||
* [https://sqlzoo.net/ "SQLzoo"] - SQL wiki and tutorials, interactive tests. |
|||
* [https://www.sqlitetutorial.net/sqlite-python/ SQLite tutorial] |
|||
* [https://randomuser.me/ Random user generator] |
|||
====Q&A sessions==== |
|||
We use Slido for Q&A sessions [https://app.sli.do/event/wkqtbios/live/questions here]. Use the code as provided in Slack. |
Latest revision as of 09:21, 15 August 2022
Course: Introduction to Computer Science CS1 (BITL).
Please follow eStudijas/ORTUS for the updates.
Resources
Test environments
Practice exercises
- Snakify.org - Python exercises
- HackerRank.com - practice questions
Python
Javascript
- JavaScript tutorial at W3 Schools
HTML
- HTML tutorial at W3 Schools
SQL
Security
XSS. HTML and SQL injection attacks and prevention.
- 14 new attacks on web browsers detected by Ruhr-Universität Bochum (RUB) and Niederrhein University of Applied Sciences.