BSc: Natural Language Processing
Natural Language Processing
- Course name: Natural Language Processing
- Course number: XYZ
- Subject area: Programming Languages and Software Engineering
- Version: Spring 2022
Course characteristics
Key concepts of the class
What is the purpose of this course?
The Natural Language Processing course teaches
- What should a student remember at the end of the course?
- What should a student be able to understand at the end of the course?
- How to create high quality software using mainstream concepts of programming.
- What is object-oriented programming and its main advantages
- How to increase the level of abstraction with help of genericity.
- How to create concurrent programs and what are the main issues related to this kind of programming
- What should a student be able to apply at the end of the course?
- To be able to create quality programs in Java.
Course evaluation
Proposed points | ||
---|---|---|
Labs/seminar classes | 40 | 40 |
Interim performance assessment | 30 | 30 |
Exams | 30 | 30 |
If necessary, please indicate freely your course’s features in terms of students’ performance assessment:
Labs/seminar classes:
- In-class participation 1 point for each individual contribution in a class but not more than 1 point a week (i.e. 14 points in total for 14 study weeks),
- overall course contribution (to accumulate extra-class activities valuable to the course progress, e.g. a short presentation, book review, very active in-class participation, etc.) up to 6 points.
Interim performance assessment:
- in-class tests up to 10 points for each test (i.e. up to 40 points in total for 2 theory and 2 practice tests),
- computational practicum assignment up to 10 points for each task (i.e. up to 30 points for 3 tasks).
Exams:
- mid-term exam up to 30 points,
- final examination up to 30 points.
Overall score:
100 points (100%).
Grades range
Proposed range | ||
---|---|---|
A. Excellent | 85-100 | 85-100 |
B. Good | 75-84 | 75-84 |
C. Satisfactory | 60-75 | 60-75 |
D. Poor | 0-59 | 0-59 |
If necessary, please indicate freely your course’s grading features:
- A: more than 85 of the overall score;
- B: at least 85 of the overall score;
- C: at least 75 of the overall score;
- D: less than 60 of the overall score.
Resources and reference material
Textbook:
Course Sections
The main sections of the course and approximate hour distribution between them is as follows:
Section | Section Title | Lectures | Seminars | Self-study | Knowledge |
Number | (hours) | (labs) | evaluation | ||
1 | Introduction to programming | 12 | 6 | 12 | 2 |
2 | Introduction to object-oriented programming | 8 | 4 | 8 | 1 |
3 | Introduction to generics, exception handling and programming by contract (C) | 8 | 4 | 8 | 1 |
4 | Introduction to programming environments | 12 | 6 | 12 | 2 |
5 | Introduction to concurrent and functional programming | 8 | 4 | 8 | 1 |
Final examination | 2 |
Section 1
Section title:
Introduction to programming
Topics covered in this section:
- Basic definitions – algorithm, program, computer, von Neumann architecture, CPU lifecycle.
- Programming languages history and overview. Imperative (procedural) and functional approaches.
- Translation – compilation vs. interpretation. JIT, AOT. Hybrid modes.
- Introduction to typification. Static and dynamic typing. Type inference. Basic types – integer, real, character, boolean, bit. Arrays and strings. Records-structures.
- Programming – basic concepts. Statements and expressions. 3 atomic statements - assignment, if-check, goto. Control structures – conditional, assignment, goto, case-switch-inspect, loops.
- Variables and constants.
- Routines – procedures and functions.
What forms of evaluation were used to test students’ performance in this section?
|a|c| & Yes/No
Development of individual parts of software product code & 0
Homework and group projects & 1
Midterm evaluation & 1
Testing (written or computer based) & 1
Reports & 0
Essays & 0
Oral polls & 1
Discussions & 1
Typical questions for ongoing performance evaluation within this section
- What is the difference between compiler and interpreter?
- What is the difference between type and variable?
- What is the background of structured programming?
Typical questions for seminar classes (labs) within this section
- How to compile a program?
- How to run a program?
- How to debug a program?
Test questions for final assessment in this section
- What are the basic control structure of structured programming?
- What is the difference between statements and expressions?
- What are the benefits of type inference?
Section 2
Section title:
Introduction to object-oriented programming
Topics covered in this section:
- Key principles of object-oriented programming
- Overloading is not overriding
- Concepts of class and object
- How objects can be created?
- Single and multiple inheritance
What forms of evaluation were used to test students’ performance in this section?
|a|c| & Yes/No
Development of individual parts of software product code & 1
Homework and group projects & 1
Midterm evaluation & 1
Testing (written or computer based) & 0
Reports & 1
Essays & 0
Oral polls & 1
Discussions & 1
Typical questions for ongoing performance evaluation within this section
- What is the meaning of polymorphism?
- How to check the dynamic type of an object?
- What are the limitations of single inheritance?
- What are the issues related with multiple inheritance?
Typical questions for seminar classes (labs) within this section
- How to handle array of objects of some class type?
- How to implement the class which logically has to have 2 constructors with the same signature but with different semantics?
Test questions for final assessment in this section
- Name all principles of object-oriented programming?
- Explain what conformance means?
- Explain why cycles are prohibited in the inheritance graph?
Section 3
Section title:
Introduction to generics, exception handling and programming by contract (C)
Topics covered in this section:
- Introduction to generics
- Introduction to exception handling
- Introduction to programming by contract (C)
What forms of evaluation were used to test students’ performance in this section?
|a|c| & Yes/No
Development of individual parts of software product code & 0
Homework and group projects & 1
Midterm evaluation & 1
Testing (written or computer based) & 0
Reports & 0
Essays & 0
Oral polls & 1
Discussions & 1
Typical questions for ongoing performance evaluation within this section
- What is constrained genericity?
- What is exception?
- What is assertion?
Typical questions for seminar classes (labs) within this section
- How constrained genericity may be used for sorting of objects?
- In which order catch blocks are being processed?
- Where is the problem when precondition is violated?
Test questions for final assessment in this section
- Can array be treated as generic class?
- What is the difference between throw and throws in Java?
- What is purpose of the class invariant?
Section 4
Section title:
Introduction to programming environments
Topics covered in this section:
- Concept of libraries as the basis for reuse.
- Concept of interfaces/API. Separate compilation.
- Approaches to software documentation.
- Persistence. Files.
- How to building a program. Recompilation problem. Name clashes, name spaces
What forms of evaluation were used to test students’ performance in this section?
|a|c| & Yes/No
Development of individual parts of software product code & 0
Homework and group projects & 1
Midterm evaluation & 0
Testing (written or computer based) & 1
Reports & 0
Essays & 0
Oral polls & 1
Discussions & 1
Typical questions for ongoing performance evaluation within this section
- How reuse helps to develop software?
- How concept of libraries and separate compilation co-relate?
- What are the benefits of integrating documentation into the source code?
- Why is it essential to have persistent data structures?
Typical questions for seminar classes (labs) within this section
- What is to be done to design and develop a library?
- How to add documenting comments into the source code?
- What ways exists in Java to support persistence ?
Test questions for final assessment in this section
- How to deal with name clashes?
- What is the main task of the recompilation module?
- What are the differences between different formats of persistence files?
Section 5
Section title:
Introduction to concurrent and functional programming
Topics covered in this section:
- Concurrent programming.
- Functional programming within imperative programming languages.
What forms of evaluation were used to test students’ performance in this section?
|a|c| & Yes/No
Development of individual parts of software product code & 0
Homework and group projects & 1
Midterm evaluation & 0
Testing (written or computer based) & 1
Reports & 0
Essays & 0
Oral polls & 1
Discussions & 1
Typical questions for ongoing performance evaluation within this section
- Explain the key differences parallelism and concurrency
- What are the key issues related to parallel execution?
- What are the models of parallel execution?
- What is the difference between function and object?
Typical questions for seminar classes (labs) within this section
- Which Java construction support concurrency?
- What is a thread?
- What is in-line lambda function?
Test questions for final assessment in this section
- What is the meaning of SIMD and MIMD?
- What are the implications of the Amdahl’s law?
- What model of concurrency Java relies on?
- Which function can be considered as pure?
- How to declare a function to accept a functional object as its argument?
- How Java supports high-order functions?
- How capturing variables works in Java?