Introduction to Computer Science 2

Acronym
1C09MIN902
Status
mandatory
Semester
2
Number of classes
3L + 2E
ECTS
7.0
Study programme
Mathematics and Informatics
Module
Type of study
Bachelor academic studies
Lecturer/Associate (practicals)
Prerequisite / Form of prerequisites

Introduction to Computer Science 1

Learning objectives

1. Familiarization with assembly language.
2. Introduction to the higher-level programming language Python.
3. Developing a programmer's perspective on the computer as a machine.
4. Programming acquaintance with the capabilities offered by the computer as a data processing machine, considering various paradigms, technologies, and applications.
5. Understanding from a programming perspective: memory model, data storage (types and representations), input and output operations, interrupts, and exceptions;
6. Setting the groundwork for following courses: Data Structures and Algorithms, Algorithm Design and Analysis.

Learning outcomes

The student should master the following:
- Understanding the characteristics of writing code in assembly language;
- Understanding the basic connections between lower-level and higher-level programming languages;
- Writing simple procedural scripts in the Python programming language.
- Basics of code testing.
- Defining program classes in Python according to a given specification;
- Understanding the memory model of code execution.
- Programming design of a simple graphical user interface (UI interactions) and understanding MVC;
- Programming interaction with a database and executing simple SQL statements;
- Understanding the client-server model;
- Differentiating between various methods of parallel computing.

Course contents

Basics of programming in assembly language. Introduction to programming in the Python programming language. Types. Variables. Assignment statements. Input and output. Built-in functions. Defining custom functions. Function documentation and code commenting. Visualization of the call stack (trace). Type conversions. If statements. Indexing and slicing. String methods. Lists. The range function. For and While loops. Nested and nested lists. Nested loops. File processing. Tuples. Dictionaries. Dictionary iteration. Introduction to testing. Unit testing. Introduction to algorithm analysis. Linear search of a list. Binary search of a list. Comparison of searches. Bubble sort. Selection sort. Insertion sort. Introduction to object-oriented programming. Formation of new types. Functions as arguments. Default and named arguments. Exceptions. Introduction to graphical user interface design. Introduction to databases. Understanding the client-server model. Flynn's taxonomy. Introduction to parallel computing.

Literature
  1. Jennifer Campbell, Paul Gries, Jason Montojo, Greg Wilson, Practical Programming: An Introduction to Computer Science Using Python 3, Pragmatic Bookshelf, 2017.

    (Original)
  2. Miloš A. Kovačević, Osnove programiranja na Pajtonu, Građevinski fakultet u Beogradu, Beograd, 2021.

    (Original)
  3. Grupa autora, Metodička zbirka zadataka iz osnova programiranja --- Python, Društvo matematičara Srbije i Fondacija “Petlja”, Beograd, 2019.

    (Original)
Evaluation and grading

Midterm examination(s) in the form of a set of problems. Written (practical) examination. Theoretical examination consisting of a written test and an oral examination.

Teaching Methods

Lectures. Guided discussion. Classroom exercises.