Difference between revisions of "BSc: Natural Language Processing"
Jump to navigation
Jump to search
m (M.petrishchev moved page BSc:NaturalLanguageProcessing to BSc: Natural Language Processing) |
(Blanked the page) Tag: Blanking |
||
Line 1: | Line 1: | ||
− | = Natural Language Processing = |
||
− | |||
− | * <span>'''Course name:'''</span> Natural Language Processing |
||
− | * <span>'''Course number:'''</span> XYZ |
||
− | * <span>'''Subject area:'''</span> Programming Languages and Software Engineering |
||
− | * <span>'''Version:'''</span> 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 === |
||
− | |||
− | {| |
||
− | |+ Course grade breakdown |
||
− | ! |
||
− | ! |
||
− | !align="center"| '''Proposed points''' |
||
− | |- |
||
− | | Labs/seminar classes |
||
− | | 40 |
||
− | |align="center"| 40 |
||
− | |- |
||
− | | Interim performance assessment |
||
− | | 30 |
||
− | |align="center"| 30 |
||
− | |- |
||
− | | Exams |
||
− | | 30 |
||
− | |align="center"| 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 === |
||
− | |||
− | {| |
||
− | |+ Course grading range |
||
− | ! |
||
− | ! |
||
− | !align="center"| '''Proposed range''' |
||
− | |- |
||
− | | A. Excellent |
||
− | | 85-100 |
||
− | |align="center"| 85-100 |
||
− | |- |
||
− | | B. Good |
||
− | | 75-84 |
||
− | |align="center"| 75-84 |
||
− | |- |
||
− | | C. Satisfactory |
||
− | | 60-75 |
||
− | |align="center"| 60-75 |
||
− | |- |
||
− | | D. Poor |
||
− | | 0-59 |
||
− | |align="center"| 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: |
||
− | |||
− | {| |
||
− | |+ Course Sections |
||
− | |align="center"| '''Section''' |
||
− | | '''Section Title''' |
||
− | |align="center"| '''Lectures''' |
||
− | |align="center"| '''Seminars''' |
||
− | |align="center"| '''Self-study''' |
||
− | |align="center"| '''Knowledge''' |
||
− | |- |
||
− | |align="center"| '''Number''' |
||
− | | |
||
− | |align="center"| '''(hours)''' |
||
− | |align="center"| '''(labs)''' |
||
− | |align="center"| |
||
− | |align="center"| '''evaluation''' |
||
− | |- |
||
− | |align="center"| 1 |
||
− | | Introduction to programming |
||
− | |align="center"| 12 |
||
− | |align="center"| 6 |
||
− | |align="center"| 12 |
||
− | |align="center"| 2 |
||
− | |- |
||
− | |align="center"| 2 |
||
− | | Introduction to object-oriented programming |
||
− | |align="center"| 8 |
||
− | |align="center"| 4 |
||
− | |align="center"| 8 |
||
− | |align="center"| 1 |
||
− | |- |
||
− | |align="center"| 3 |
||
− | | Introduction to generics, exception handling and programming by contract (C) |
||
− | |align="center"| 8 |
||
− | |align="center"| 4 |
||
− | |align="center"| 8 |
||
− | |align="center"| 1 |
||
− | |- |
||
− | |align="center"| 4 |
||
− | | Introduction to programming environments |
||
− | |align="center"| 12 |
||
− | |align="center"| 6 |
||
− | |align="center"| 12 |
||
− | |align="center"| 2 |
||
− | |- |
||
− | |align="center"| 5 |
||
− | | Introduction to concurrent and functional programming |
||
− | |align="center"| 8 |
||
− | |align="center"| 4 |
||
− | |align="center"| 8 |
||
− | |align="center"| 1 |
||
− | |- |
||
− | |align="center"| Final examination |
||
− | | |
||
− | |align="center"| |
||
− | |align="center"| |
||
− | |align="center"| |
||
− | |align="center"| 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? === |
||
− | |||
− | <div class="tabular"> |
||
− | |||
− | <span>|a|c|</span> & '''Yes/No'''<br /> |
||
− | Development of individual parts of software product code & 0<br /> |
||
− | Homework and group projects & 1<br /> |
||
− | Midterm evaluation & 1<br /> |
||
− | Testing (written or computer based) & 1<br /> |
||
− | Reports & 0<br /> |
||
− | Essays & 0<br /> |
||
− | Oral polls & 1<br /> |
||
− | Discussions & 1<br /> |
||
− | |||
− | |||
− | |||
− | </div> |
||
− | === 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? === |
||
− | |||
− | <div class="tabular"> |
||
− | |||
− | <span>|a|c|</span> & '''Yes/No'''<br /> |
||
− | Development of individual parts of software product code & 1<br /> |
||
− | Homework and group projects & 1<br /> |
||
− | Midterm evaluation & 1<br /> |
||
− | Testing (written or computer based) & 0<br /> |
||
− | Reports & 1<br /> |
||
− | Essays & 0<br /> |
||
− | Oral polls & 1<br /> |
||
− | Discussions & 1<br /> |
||
− | |||
− | |||
− | |||
− | </div> |
||
− | === 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? === |
||
− | |||
− | <div class="tabular"> |
||
− | |||
− | <span>|a|c|</span> & '''Yes/No'''<br /> |
||
− | Development of individual parts of software product code & 0<br /> |
||
− | Homework and group projects & 1<br /> |
||
− | Midterm evaluation & 1<br /> |
||
− | Testing (written or computer based) & 0<br /> |
||
− | Reports & 0<br /> |
||
− | Essays & 0<br /> |
||
− | Oral polls & 1<br /> |
||
− | Discussions & 1<br /> |
||
− | |||
− | |||
− | |||
− | </div> |
||
− | === 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? === |
||
− | |||
− | <div class="tabular"> |
||
− | |||
− | <span>|a|c|</span> & '''Yes/No'''<br /> |
||
− | Development of individual parts of software product code & 0<br /> |
||
− | Homework and group projects & 1<br /> |
||
− | Midterm evaluation & 0<br /> |
||
− | Testing (written or computer based) & 1<br /> |
||
− | Reports & 0<br /> |
||
− | Essays & 0<br /> |
||
− | Oral polls & 1<br /> |
||
− | Discussions & 1<br /> |
||
− | |||
− | |||
− | |||
− | </div> |
||
− | === 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? === |
||
− | |||
− | <div class="tabular"> |
||
− | |||
− | <span>|a|c|</span> & '''Yes/No'''<br /> |
||
− | Development of individual parts of software product code & 0<br /> |
||
− | Homework and group projects & 1<br /> |
||
− | Midterm evaluation & 0<br /> |
||
− | Testing (written or computer based) & 1<br /> |
||
− | Reports & 0<br /> |
||
− | Essays & 0<br /> |
||
− | Oral polls & 1<br /> |
||
− | Discussions & 1<br /> |
||
− | |||
− | |||
− | |||
− | </div> |
||
− | === 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? |