Difference between revisions of "BSc: Natural Language Processing"

From IU
Jump to navigation Jump to search
(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> &amp; '''Yes/No'''<br />
 
Development of individual parts of software product code &amp; 0<br />
 
Homework and group projects &amp; 1<br />
 
Midterm evaluation &amp; 1<br />
 
Testing (written or computer based) &amp; 1<br />
 
Reports &amp; 0<br />
 
Essays &amp; 0<br />
 
Oral polls &amp; 1<br />
 
Discussions &amp; 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> &amp; '''Yes/No'''<br />
 
Development of individual parts of software product code &amp; 1<br />
 
Homework and group projects &amp; 1<br />
 
Midterm evaluation &amp; 1<br />
 
Testing (written or computer based) &amp; 0<br />
 
Reports &amp; 1<br />
 
Essays &amp; 0<br />
 
Oral polls &amp; 1<br />
 
Discussions &amp; 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> &amp; '''Yes/No'''<br />
 
Development of individual parts of software product code &amp; 0<br />
 
Homework and group projects &amp; 1<br />
 
Midterm evaluation &amp; 1<br />
 
Testing (written or computer based) &amp; 0<br />
 
Reports &amp; 0<br />
 
Essays &amp; 0<br />
 
Oral polls &amp; 1<br />
 
Discussions &amp; 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> &amp; '''Yes/No'''<br />
 
Development of individual parts of software product code &amp; 0<br />
 
Homework and group projects &amp; 1<br />
 
Midterm evaluation &amp; 0<br />
 
Testing (written or computer based) &amp; 1<br />
 
Reports &amp; 0<br />
 
Essays &amp; 0<br />
 
Oral polls &amp; 1<br />
 
Discussions &amp; 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> &amp; '''Yes/No'''<br />
 
Development of individual parts of software product code &amp; 0<br />
 
Homework and group projects &amp; 1<br />
 
Midterm evaluation &amp; 0<br />
 
Testing (written or computer based) &amp; 1<br />
 
Reports &amp; 0<br />
 
Essays &amp; 0<br />
 
Oral polls &amp; 1<br />
 
Discussions &amp; 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?
 

Revision as of 23:53, 20 April 2022