Budapest University of Technology and Economics, Faculty of Electrical Engineering and Informatics

    Belépés
    címtáras azonosítással

    vissza a tantárgylistához   nyomtatható verzió    

    Basics of Programming 1.

    A tantárgy neve magyarul / Name of the subject in Hungarian: A programozás alapjai 1.

    Last updated: 2012. április 3.

    Budapest University of Technology and Economics
    Faculty of Electrical Engineering and Informatics
    Software Engineering
    Course ID Semester Assessment Credit Tantárgyfélév
    VIEEA100 1 2/2/0/v 5 2/1
    3. Course coordinator and department Dr. Czirkos Zoltán,
    4. Instructors Zsolt Kohári
    5. Required knowledge -
    6. Pre-requisites
    Kötelező:
    TárgyEredmény( "BMEVIEEA101" , "jegy" , _ ) >= 2

    ÉS Training.Code=("5N-A8")

    A fenti forma a Neptun sajátja, ezen technikai okokból nem változtattunk.

    A kötelező előtanulmányi rend az adott szak honlapján és képzési programjában található.

    Ajánlott:
    -
    7. Objectives, learning outcomes and obtained knowledge The main objective of the course is to provide students with appropriate skills in computerized problem-solving and basic use of tools that can be effectively applied during their further studies. A further goal of the course is to teach writing portable programs. Learning a high-level programming language the C language allows students to reach these goals in practice. The classroom practice follows the syllabus of lectures; helps better understand the topics of the lecture through detailed examination of the algorithms.

     

    8. Synopsis First week Lecture: Introduction. Concepts of Programming. Expressions and variables, the type concept. C Language Reference. Simple expressions in the program.

    Practice: Everyday algorithms. Create a flowchart-like diagram of well known algorithms (e.g., written addition, subtraction, prime factorisation using pen and paper).

    Second week

    Lecture: Elements of the Source Code. Algorithm: definition and description. Cycle (loop), branching, sequence. Combination of these. Complex control structures, complex expressions. Computer hardware overview.

    Practice: Exercise algorithms with a deck of cards as an example. Find a given card. Which is the lowest/highest? How can I sort?

    Third week

    Lecture: Pseudo code / C versions of simple algorithms. Theorems of Summation and Search of extremum. Simple types. Character and logical types. Arrays.

    Practice: Algorithms in C language description. Examples from Number theory. Quadratic equation. Numerical methods, e.g. calculation of pi using loops. Several versions of 'is this a prime number'. Palindrome numbers.

    4th week

    Lecture: Built-in types in details. Finite numerical representation. Integer and floating-point representation of numbers, limits. Concept of functions and their use.

    Practice: Exercise tasks that can be solved using arrays. Calendar, leap years. The sieve of Eratosthenes. ATM.

    5th week

    Lecture: Operators: precedence, evaluation, side effects. Structures.

    Practice: Complex problems, decomposition. Functions, parameters and return values. Writing simple math-like functions. My toupper, Caesar encryption.

    6th week

    Lecture: Enumerated type. State machine. Pointers. Strings.

    Practice: Structures. 3D vector structure. Operations and functions. More complex data types: array of structure, array in structure.

    7th week

    Lecture: Communication between the program and the outside world. Pre-processing. Program Segmentation. Writing maintainable programs. Role of const.

    Practice: Using Arrays and functions, arrays as function parameters. String algorithms. Text reverser, palindrome. String as function parameter. Array size and the length of a string. Risk of indexing out of range.

    8th week

    Lecture: Array algorithms. Searches. Sorts.

    Practice: State machine design examples, details of implementation. TH counter, comment filter.

    9th week

    Lecture: Dynamic memory management. Dynamic arrays. Dynamic encoding of a string. Systematic discussion of memory handling.

    Practice: Sorting an array. Median search. N smallest items. Interval of identical elements. Sorting keys. Cards: array of structures, sorting by suit or by rank.

    10th week

    Lecture: Dynamic data structures: linked lists. List algorithms. Traversal, deletion, insertion. Application of list structures: LIFO, FIFO.

    Practice: Coding a complete "class": Set. Work with Dynamic arrays. Storing the size, search, resize. Work with pointers to structures. 11th week

    Lecture: Recursion and dynamic data structures. Trees, using binary trees. Search trees, decoding trees. Traversing trees.

    Practice: Choosing a Data Structure. Lists; re-linking the elements.

    12th week

    Lecture: function pointers. Designing a function plotting program. Union, bit-field.

    Practice: Recursive functions. Tree algorithms. Nodes, levels of a tree (depth), leaves. Analysis of symmetrical trees.

    13th week

    Lecture: More data structures. Design of large programs. Functional decomposition of a complex project.

    Practice: function pointers. Numerical integration.

    14th week

    Spare lecture.

    Practice: practice for the exam.

     

    9. Method of instruction There are two lectures and two classroom practices every week. This subject is strongly related to Software Laboratory 1.

     

    10. Assessment It is compulsory to visit the lectures and practices. The presence is checked every time. The absence of a student at the lectures and at the classroom practices must be less than 30%. Reaching this limit in either of the lecture or practice results in denial of the signature. (see Code of Studies and Exams) a. During the semester:

    There are two lessons of lecture and two lessons of classroom practice each week. There is one mid-semester (major) test. Five times during the semester there are small tests on the classroom practice. Beside the prescribed presence rate, there are two requirements to obtain a signature at the end of the semester: First a successfully written major test (pass or better). The second requirement is that the sum of the scores of the three best small tests should exceed the 40% of the total score. Signatures obtained in this subject, which are not older than two years are accepted. Students with excellent major and small tests get offered an exam mark based on their mid-semester results.

    b. The exam period:

    The subject ends in a written examination. A signature is required to start the exam.

    c. Pre-exam:

    Students with sufficiently high major test score can participate in the pre-exam, which is held during the repeat period

     

    11. Recaps There is a repetition of the mid-semester test, by the end of the semester. There is another repetition of the mid-semester test, by the end of the repeat period. There is no way for any further repeated test beyond the repeat period. There is no repeat possibility for the presence and for the small tests.

     

    12. Consultations Consultation: the usual way is via e-mail. Personal consultation is also possible based on reconciliation with the teacher.

     

    13. References, textbooks and resources [1]      B.W. Kernighan - D.M. Ritchie:            The C Programming Language.

              Prentice Hall, 1988. 2nd edition

    [2]      N.Wirth:

              Algorithms + Data Structures = Programs

              Prentice Hall, 1976. 1st edition

    Further reading: any book dealing with algorithms and/or C programming can be useful.

     

    14. Required learning hours and assignment
    Classes56
    Preparation for classes19
    Preparation for test20
    Homework10
    Learning of prescribed matters25
    Preparation for exam20
    Sum150
    15. Syllabus prepared by
    Name:

     

    Position:

     

    Department.:

     

    Dr.Poppe András

     

    Assoc. professor

     

    Dept. of Electron Devices

     

    Programming co-operative

     

    Dept. of Electron Devices