Navigation

1C09MNS902 - Introduction to Computer Science 2

Course specification
Type of study Bachelor academic studies
Study programme Mathematics and Informatics
Course title Introduction to Computer Science 2
Acronym Status Semester Number of classes ECTS
1C09MNS902 mandatory 2 3L + 2E 7.0
Lecturers
Lecturer
Lecturer/Associate (practicals)
Prerequisite Form of prerequisites
Introduction to Computer Organization and Architecture 1 Passed exam
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.
Content
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.
Teaching Methods
Lectures. Guided discussion. Classroom exercises.
Literature
  1. Jennifer Campbell, Paul Gries, Jason Montojo, Greg Wilson, Practical Programming: An Introduction to Computer Science Using Python 3, Pragmatic Bookshelf, 2017. (Original title)
  2. Miloš A. Kovačević, Osnove programiranja na Pajtonu, Građevinski fakultet u Beogradu, Beograd, 2021. (Original title)
  3. Grupa autora, Metodička zbirka zadataka iz osnova programiranja --- Python, Društvo matematičara Srbije i Fondacija “Petlja”, Beograd, 2019. (Original title)
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.