Programming 1

Course description


  1. Overview of programming languages with emphasis on 3rd generation
  2. Writing, compiling and executing a simple computer program
  3. Basic data types
    • Integer and real numbers, characters and logical values
    • Constants and variables declaration
  4. Programming statements
    • The assignment statement, expressions, operators, operator precedence
    • Conditional statements
    • Loops
  5. Methods
    • The role and classification of methods
    • Formal and actual parameters
    • Recursion
  6. Classes and objects
    • Instance variables and methods
    • Constructors, overloading constructors
    • Access modifiers
    • Using predefined classes
  7. Arrays
    • One-dimensional and multidimensional arrays
    • Arrays of objects
  8. Strings
  9. Inheritance
    • Overriding superclass methods
    • Using superclass constructors in subclasses
    • Dynamic method binding
    • Abstract classes and abstract methods
    • The Object class
    • Creating and using interfaces
  10. Graphics and GUI widget toolkits, components of GUI
  11. Event driven programming

lab practice:

Students solve practical problems to reinforce the understanding of topics covered during lectures. Individual work under the guidance of teaching assistants is emphasized.


Students are given a list of programs that must be developed outside contact hours and submitted for evaluation within prescribed deadlines, thus preventing them from procrastinating and encouraging self-reliance. Completion of these assignments is a prerequisite for entering the exam.

Objectives and competences

The main objective is to teach students basic concepts of object-oriented programming in a general-purpose 3rd generation programming language, thus making them able to develop computer programs of low complexity.

The competences students gain are:

  • developing skills in critical, analytical and synthetic thinking,
  • the ability to understand and solve professional challenges in computer and information science.
  • the ability to apply acquired knowledge in independent work for solving technical and scientific problems in computer and information science; the ability to upgrade acquired knowledge.
  • basic skills in computer and information science, which includes basic theoretical skills, practical knowledge and skills essential for the field of computer and information science.
  • basic skills in computer and information science, allowing the continuation of studies in the second study cycle.

Learning and teaching methods

  • Lectures with active participation of students (explanation, discussion, questions, examples, problem solving);
  • Lab practice (reflection of experience, practical problem solving, presentation of solutions, discussion, communication of feedback information)
  • Homework (individual development of simple computer programs)
  • Individual consultation hours (discussion, additional explanation, specific problems solving)

Intended learning outcomes

After the completion of the course, a student will be able to:

  • understand the process of writing, compiling, and running a computer program
  • understand and use basic programming constructs and data structures
  • understand the concepts of object-oriented programming (including inheritance)
  • understand and use basic algorithms for solving typical programming problems
  • know the basics of computer graphics and basic components of GUI
  • know the principles of event-driven programming
  • write simple computer programs in a general purpose programming language

Reference nosilca

  1. MAHNIČ, Viljan. A capstone course on agile software development using Scrum. IEEE trans. ed., Feb. 2012, vol. 55, no. 1, str. 99-106
  2. MAHNIČ, Viljan, HOVELJA, Tomaž. On using planning poker for estimating user stories. J. syst. softw.. Sep. 2012, vol. 85, no. 9, str. 2086-2095.
  3. MAHNIČ Viljan. Teaching Scrum through team-project work: students' perceptions and teacher's observations. International journal of engineering education, 2010, vol. 26, no. 1, str. 96-110.
  4. FÜRST, Luka, MAHNIČ, Viljan. Introductory programming course: motivating students with prior knowledge. World transactions on engineering and technology education, ISSN 1446-2257, 2013, vol. 11, no. 4, str. 400-405., %20No.4%20(2013)/08-Fuerst-L.pdf.
  5. MAHNIČ, Viljan, FÜRST, Luka, ROŽANC, Igor. Java skozi primere. Šenčur: Bi-tim, 2008. XIV, 478 str., ponovni ponatis 2012.

Celotna bibliografija je dostopna na SICRISu:

Study materials

  1. V. Mahnič, L. Fürst, I. Rožanc: Java skozi primere, Bi-TIM, 2008.
  2. J. Farrell: Java Programming, Seventh Edition, Course Technology, Cengage Learning, 2014.

Dodatna literatura:

  1. I. Horton: Beginning Java, Java 7 Edition, John Wiley & Sons, Inc., 2011
  2. Uroš Mesojedec, Borut Fabjan: Java 2: Temelji programiranja, Pasadena, 2004.

Bodi na tekočem

Univerza v Ljubljani, Fakulteta za elektrotehniko, Tržaška cesta 25, 1000 Ljubljana

E: T:  01 4768 411