AY 2019 Undergraduate School Course Catalog

Programming

2019/07/22

Back
開講学期
/Semester
2019年度/Academic Year  2学期 /Second Quarter
対象学年
/Course for;
1st year
単位数
/Credits
4.0
責任者
/Coordinator
Kohei Otsuyama
担当教員名
/Instructor
Yasuhiro Hisada, Kohei Otsuyama, Hirohide Demura, Naru Hirata, Naohito Nakasato, Kohei Kitazato, Takeaki Sampe, Kenta Ofuji, Wang Junbo, Evgeny Pyshkin
推奨トラック
/Recommended track
履修規程上の先修条件
/Prerequisites

更新日/Last updated on 2019/02/22
授業の概要
/Course outline
(ICTG class starts in Q4.And Prof. Pyshkin, E. is in charge of the class.)
As for the programming by C language, there are a lot of students who do not have an enough skill, though it is very important for the student of University of Aizu.
This course is the first half of the 2-quarter C course (latter half is called "Programming C"), and taught basics of C programming language.
授業の目的と到達目標
/Objectives and attainment
goals
This course is aimed to learn skills such as:
・The concept of the programming is understood.
→When the problem is given, a series of operation until the program to solve it is made is acquired.
・The fundamental syntax of C languages (i.e. branch, loop, array, and function, etc.) are understood.
→You can make a program using them.
・A good programming style is acquired.
授業スケジュール
/Class schedule
Details of each lecture are described below

Lecture 1 What is a computer?
  Computer software, hardware, OS, and application,
  High-level language, C language and printf

Lecture 2 Variable, input/output and operator
  Variables and its naming convention.
  Reserved word, variable declaration, initialization and assignment
  Printf/scanf, calculation, operator precedence.

Lecture 3 Various variable types and type conversion
  Integral types, floating point types and type conversion between different types.
  Precise format of printf/scanf.

Lecture 4 Conditional execution(branch) -if and switch/case-
  Data structure, algorithm, coding.
  Conditional execution(Branch), conditional expression, relational operator and operand.
  True and false, if - else, switch - case, default and break.

Lecture 5 Loop1 - while -.
  Indent, flow chart, loop, while.
  Increment and decrement operator, prefix position, suffix position.
  Assignment operator and infinite loop

Lecture 6 Loop2 - for-
  For, break, continue
  Better programs i.e. indent and efficient variable/program.

Lecture 7 One-dimensional array
  Array, array index, element and array initialization.
  Criterion whether array should be used or not. Array sample program

Lecture 8 Flow chart
  Making programs using a flow chart.

Lecture 9 Two-dimensional array(Matrix)
  The declaration and the structure of two-dimensional array.
  The row and column, diagonal matrix and macro.
  Initialization of matrix. Addition and multiplication of matrix

Lecture 10 The review and the application of matrix.
  Review of array. Redirection, pipe.
  Standard error output(stderr), picture processing(Binomialization, reversal and noise reduction)

Lecture 11 The function1 Basics
  What is a function? Argument, passing arguments.
  Declaration of a function and calling a function.
  Prototype declaration, return value void type return.
  Automatic (local) variable, library function and <stdio.h>

Lecture 12 The function 2 Application
  Newton method, integer number and binary number manipulation.
  Error checking, forced termination by exit().

Lecture 13 The function 3 Further topics on function
  Automatic variable, external variable, stack and queue data structure.
  Numerical calculation and accuracy.
  An example of numerical calculation(Free fall simulation) Introduction of PROVIT

Lecture 14 Overall review and a good programming
  Understandability and efficiency of the program.
  Debugging, indent comment and macro.
教科書
/Textbook(s)
"Programming by C language Basic part" The second edition, Uchida, ohm publishment
Handouts (Sold in the University shop).
You MUST buy the handouts before the class begins.
成績評価の方法・基準
/Grading method/criteria
・Quiz (quizzes are provided on every lecture)20%
・Computer exercise 30%
・Final exam 50%
The quiz is also used as the attendance confirmation. Student whose attendance is lower than regulated attendance rate(2/3 or more) is considered to abandon the class.
Student who is absent from the final examination is also considered to abandon the class.
履修上の留意点
/Note for course registration
Other related courses which include important concepts relevant to the course : programming C, Intro. Computer Systems.
参考(授業ホームページ、図書など)
/Reference (course
website, literature, etc.)
From outside the university
http://www.u-aizu.ac.jp/course/prog1/
From the university WS (There are newer information and information that can be seen from other domain like quiz result etc. on this URL)
File:///home/course/prog1/public_html/2019/welcome.html

[work experience]
Name: Kohei Otsuyama
Work experience: Fujitsu
Job Description: Design of super-large computer
Relevance with this course:
In addition to logic design, he was creating programs for design efficiency tools,
This practical experience is utilized in this course.


Back
開講学期
/Semester
2019年度/Academic Year  3学期 /Third Quarter
対象学年
/Course for;
1st year
単位数
/Credits
4.0
責任者
/Coordinator
Yasuhiro Hisada
担当教員名
/Instructor
Yasuhiro Hisada, Kohei Otsuyama, Jung-pil Shin, Takeaki Sampe, Yodai Watanabe, Evgeny Pyshkin, Naru Hirata
推奨トラック
/Recommended track
履修規程上の先修条件
/Prerequisites

更新日/Last updated on 2019/03/01
授業の概要
/Course outline
(ICTG class starts in Q1.And Prof. Pyshkin, E. is in charge of the class.)
<Note> This is an English translation of the Intro.Programming Japanese course.
If you want to know about the Intro.Programming ICTG English course, please follow this link(https://www.u-aizu.ac.jp/sgu/info/files/docs/P02-Englishcourse.pdf).
-------------------------------------------------------------------------------------------------------------

As a successor of the "Intro. programming" lecture of the 2nd quarter, this lecture is constituted based on the following concept.
・Graduate studies and following lectures, such as algorithms and data structures, require fairy high programming skills. Students can obtain skills to match that.
・Learn the skills to create a larger program.
授業の目的と到達目標
/Objectives and attainment
goals
This course is aimed to learn skills such as:
・Understand loop, array and function that were learned in the intro. programming in the 2nd quarter, and used them effectively.
・Understand character, character string, pointer, file, structure, recurrence, and used them.
・Can write a largerer program
・Can build up a program with group.
・Obtain good programming-style.
授業スケジュール
/Class schedule
・Intro. Programming course(1st semester) review
・Character and string
・Address and Pointers
・Structural declaration and definition of a
Input & Output Files
・Dynamic memory allocation
・Command Line Options
・Manipulate a linked list.
・Group programming
・Preproccessor
・The good programming style
Detailed schedule of lectures will be shown in the web pages.
教科書
/Textbook(s)
"Programming by C language Application part" The second edition, Uchida, ohm publishment
Handouts (To be sold at the University shop).
Intro. programming and C programming handouts are combined into one copy.
You don't have to buy the handouts if you already have one.
成績評価の方法・基準
/Grading method/criteria
・Quiz (quizzes executed every lecture)20%
・Computer exercise 30%
・Final exam 50%
The quiz is also used as the attendance confirmation.
Student whose attendance is lower than regulated attendance rate(2/3 or more) are considered to abandon the class.
Student who is absent from final examination is also considered to abandon the class.
履修上の留意点
/Note for course registration
Prerequisites : none
Other related courses which include
important concepts relevant to the course : Intro. Programming(2nd quarter), Intro. Computer Systems, Algo.and Data Struct.
Formal prerequisites:None
参考(授業ホームページ、図書など)
/Reference (course
website, literature, etc.)
From outside the university
http://www.u-aizu.ac.jp/course/prog1/
From the university WS (There are newer information and information that can be seen from other domain like quiz result etc. on this URL)
file:///home/course/prog1/public_html/2019/welcome.html


Back
開講学期
/Semester
2019年度/Academic Year  1学期 /First Quarter
対象学年
/Course for;
2nd year
単位数
/Credits
4.0
責任者
/Coordinator
Vitaly V. Klyuev
担当教員名
/Instructor
Vitaly V. Klyuev, Hirokuni Kurokawa (Aiguo HE), Yan Pei, Tongjun Huang, Jung-pil Shin, Mohamed Hamada
推奨トラック
/Recommended track
履修規程上の先修条件
/Prerequisites

更新日/Last updated on 2019/02/15
授業の概要
/Course outline
Java and technologies utilizing this language dominate current programming trends.
The goal of this course is to study object-oriented programming using Java.

Connection with Other Courses
The Java Programming 1 course is a basic course for students who would like to specialize in programming, software engineering, and designing software applications. This course is also highly recommended for students who selected hardware design as their major.
授業の目的と到達目標
/Objectives and attainment
goals
The best way to become familiar with any programming language and programming technology is to study examples. The most appropriate way to obtain Java skills is to solve real problems on an individual basis.

In our course, we discuss in detail a large number of examples to illustrate Java concepts and we offer a set of problems for students to solve.
授業スケジュール
/Class schedule
The course covers the basic topics:
a) objects and classes with special focus on data abstraction and
encapsulation, inheritance, and polymorphism,
b) exception handing,
c) I/O issues.
All topics are illustrated with examples which are easy to understand by students.

The tentative schedule is as follows:

1. Introduction
Administration
Literature
On-line resources
Jeliot system
How to study course materials
How to work on exercises
Requirements for the lectures
How to get credits for exercises
Exercise grading policy

2. Introduction to objects
The Java Technology Phenomenon
The "Welcome to Java!" Application
What is an Object?
What is a Class?
Online Documentation

3. Language basis
Variables
Operators
Expressions, Statements, and Blocks
Control Flow Statements

4. Classes and objects
Classes
Constructors
Methods
Creating Objects
Using Objects

5. Inheritance (1)
Inheritance: Key Definitions
The Purpose of Inheritance
An Example of Inheritance
What You Can Do in a Subclass
Private Members in a Superclass
Casting Objects
Overriding Methods
Hiding Fields
Constructor Chaining

6. Inheritance (2) and Debugging
IS-A versus HAS-A relations
The Object class as a Superclass
Debugging: Key Definitions
General strategy
jdb (a Command Line Debugger)

7. Polymorphism (1)
Introduction
Examples
The Mechanics of Polymorphism
Static and Dynamic Binding
Casting Objects
The instanceof Operator

8. Introduction to Eclipse; Review of lecture and exercise materials
Features
Creating a simple application
Debugging applications
Getting help information
Quizzes 1 – 7: Analysis of common errors
Exercise 1 – 7: Analysis of common errors

9. Polymorphism (2)
Abstract Classes  
Private and Static Methods
Order of Constructor Calls
Designing Classes
Summary of Polymorphism

10. Interfaces
What is an Interface?
Interfaces in Java
Interfaces and Multiple Inheritance
A Sample Interface, Relatable
Using an Interface as a Type
Rewriting Interfaces
Abstract Classes vs. Interfaces
Summary of Interfaces

11. Packages  
What is a Package?
Creating a Package
Referring to a Package Member
Managing Source and Class Files
Examples
Summary of Creating and Using Packages

12. Exceptions
Error Handling in C
What s an Exception?
Kinds of Exceptions
Exception Handling Keywords
Catching and Handling Exceptions

13. Basic I/O
I/O Streams
File I/O

14. Review
Quizzes 8 – 13: Analysis of common errors
Exercise 8 – 13: Analysis of common errors

See the course home page below for details and updates.
教科書
/Textbook(s)
The Java Tutorial: A Short Course on the Basics (6th Edition) (Java Series) by R. Gallardo, et al., 2014. Electronic version

Head First Java 第2版 ―頭とからだで覚えるJavaの基本 大型本 by Kathy Sierra, et al., 2006.
成績評価の方法・基準
/Grading method/criteria
The final grade will be calculated based on the following weights:
Assignments - 50%
Quizzes during lectures - 15%
Final examination - 35%
履修上の留意点
/Note for course registration
Knowledge of programming concepts is necessary. Students should complete Introduction to Programming and C Programming courses.
参考(授業ホームページ、図書など)
/Reference (course
website, literature, etc.)
A course coordinator Prof. Vitaly Klyuev has practical working experience. He was working as a  Senior researcher in an international consortium of the INCO Copernicus Program of the Commission for European Communities, Brussels, Belgium. He was involved in the development of the distributed search system running on the Web. He has teaching experience of different courses related to programming for more than 30 years.

The instructor Prof. Kurokawa has 12 years of industry career in
software system development. All subjects of this course are based
on the experience.

The course instructor Yan Pei has practical work experience. He worked for Neusoft Ltd. (China、CMMI5) and Alpine Electronics Europe D&R GmbH (Germany) for five years, where he attended and led software development projects (million LOC level) and teams, designed core algorithms, and applied for and obtained industrial patents. Based on these experiences, he can deliver lectures on algorithm and complexity, programming, and software engineering, etc.

Course Website


Back
開講学期
/Semester
2019年度/Academic Year  3学期 /Third Quarter
対象学年
/Course for;
3rd year
単位数
/Credits
3.0
責任者
/Coordinator
Keitaro Naruse
担当教員名
/Instructor
Keitaro Naruse, Pierre-Alain Fayolle, Igor Lubashevskiy
推奨トラック
/Recommended track
履修規程上の先修条件
/Prerequisites

更新日/Last updated on 2019/03/04
授業の概要
/Course outline
This course provides the fundamental knowledge of the programming language C++ to the students who have already learned the programming language C. C++ has developed by Bjarne Stroustrup at Bell Lab in mid 1980s. It is an object oriented version of C, with the elements of class, inheritance, and dynamic binding, as well as the standard template library.
授業の目的と到達目標
/Objectives and attainment
goals
The students will learn the essence of C++ language such as class and object creation, data protection, class design, template function, generic function, iterator, containers and STL.
The students will be able to develop software in C++ with the object oriented manner.
授業スケジュール
/Class schedule
The order of topics covered by each of the weeks may be varied by an instructor.  However, the total topics are same.

Professor Naruse class
#1 Introduction and string
#2 Loop and counter
#3 Data collection and iterator
#4 Program and data organization
#5 Sequential container
#6 STL
#7 Associative container
#8 Template function and generic function
#9 Class definition
#10 Memory management
#11 Abstract data type
#12 Class behaving as value
#13 Inheritance and dynamic binding
#14 Automatic memory management and summary

Professor Fayolle class:
1) Introduction
2) Data abstraction (concept of class); Stream-based I/O
3) Pointers and references
4) Definition and declaration; const-correctness; the static keyword
5) Overloading; constructors (default constructor, copy constructor, copy assignment operator, move semantic); destructors
6) Inheritance (code reuse vs interface reuse; substitution principle; access control; overriding and virtual methods)
7) Exceptions and related topics (RAII; smart pointers)
8) Operator overloading
9) Generic programming (class template; function template)
10) Standard library containers
11) Iterators
12) Function objects; lambda functions
13) Standard library algorithms
14) Concurrent programming (thread; mutex; condition variables; future)
教科書
/Textbook(s)
Each of instructors will designate  in a class.
成績評価の方法・基準
/Grading method/criteria
Quiz: 20%
Exercise: 50%
Final: 30%
Percentage can be changed by instructors
参考(授業ホームページ、図書など)
/Reference (course
website, literature, etc.)
Each of instructors will designate in a class.


Back
開講学期
/Semester
2019年度/Academic Year  4学期 /Fourth Quarter
対象学年
/Course for;
3rd year
単位数
/Credits
3.0
責任者
/Coordinator
Taro Suzuki
担当教員名
/Instructor
Taro Suzuki, Yu Nakajima
推奨トラック
/Recommended track
履修規程上の先修条件
/Prerequisites

更新日/Last updated on 2019/02/15
授業の概要
/Course outline
This course focuses on programming languages as typical computer languages and explains paradigms, models and technical points of programming languages in order to present the essence of programming languages. It will give students a notion of programming paradigm, which gives main concepts of programming, and explains the characteristics of each programming paradigm. We classify programming languages are classified based on programming paradigms and common features of programming languages belonging to the same programming paradigm. Semantics of programming languages are also explained.
The programming paradigms dealt with this course are: procedural programming, functional programming, logic programming and object oriented programming. Especially, procedural and object oriented programming, as the basis of C, C++ and Java dealt with in the other programming courses, are fully studied.
授業の目的と到達目標
/Objectives and attainment
goals
While the other programming courses focus on the syntax and usage of programming languages, this course aims to provide students with the origins and principles of the groups of programming languages. By the end of the course students will be able to explain the following:
1. the characteristics of each programming paradigm
2. the features of procedural programming languages
3. the features of object oriented programming languages
4. syntax of programming languages
5. the abstract computation mechanism of programming languages through semantics
授業スケジュール
/Class schedule
1. introduction: programming paradigms and computation models
    Introduction to procedural programming: a machine model (RAM)
2. Introduction to functional programming
3. Introduction to logic programming
4. Introduction to Object oriented programming
5. Syntax of programming languages
6. Procedural programming(1): control structures and data structures
7. Procedural programming(2): procedures
8. Object oriented programming(1): Objects, Abstract data types
9. Mid term exam
10.Object oriented programming(2): features of object oriented programming
11.Semantics of programming languages(1):
     operational semantics of RAM and procedural languages
12.Semantics of programming languages(2):
     operational semantics of logic programming languages
13.Semantics of programming languages(3): denotation and axiomatic semantics
14.Computer languages other than programming languages
     Perspective on the future of computer languages

The correspondence between classes and topics described above   may be changed according to the progress of the course.
教科書
/Textbook(s)
Michio Oyamaguchi, Hiroshi Gomi.
Programming Languages (in Japanese).
Corona publishing Co.ltd.
成績評価の方法・基準
/Grading method/criteria
Exercise      30%
Mid term exam 30%
Final exam    40%
履修上の留意点
/Note for course registration
Students will be expected to have taken the following courses.

P01 Intro.Programming
P02 C Programming
P03 JAVA Programming I
F08 Automata and Languages
F10 Language Processing Systems
参考(授業ホームページ、図書など)
/Reference (course
website, literature, etc.)
David A. Watt. Programming Language Design Concepts. Wiley. 2004.

Hanne Riis Nielson and‎ Flemming Nielson. Semantics with Applications: An Appetizer. Springer. 2007.

Chris Hankin. Lambda calculi: a guide for computer scientists. Oxford University Press. 1994.

The course instructor has work experiences:
Prof. Suzuki was engaged in the development of C and Lisp language processing systems on Prolog inference machines with a multi-paradigm programming language
combining logic and object-oriented programming paradigms, from 1987 to 1990 at MTC Co.,Ltd. Based on his experience, he can teach theory and implementation of programming languages on various programming paradigms.


Back
開講学期
/Semester
2019年度/Academic Year  1学期 /First Quarter
対象学年
/Course for;
3rd year
単位数
/Credits
3.0
責任者
/Coordinator
Incheon Paik
担当教員名
/Instructor
Hirokuni Kurokawa (Aiguo HE), Incheon Paik
推奨トラック
/Recommended track
履修規程上の先修条件
/Prerequisites

更新日/Last updated on 2019/04/10
授業の概要
/Course outline
The Java Programming II is a course for the 3rd year students who had studied basics such as objects and classes, object oriented concept, exception handling, and I/O issues in Java. This course teaches some advance topics: annotation, reflection, threads, GUI, network programming, and Android programming including new features in Java.
In the first half of this course, we will study about topics related to Java language itself such as annotation, reflection, threads, GC, and GUI. In the second half, we will experience development of distributed network applications in Java on the Web and smart mobile device.
授業の目的と到達目標
/Objectives and attainment
goals
The Java programming language benefits Internet and WWW users from access to secure, platform independent applications that can come from anywhere on the Internet. It is useful to build applications for not only distributed network but also for general-purpose. The ability to execute downloaded code on remote hosts in a secure manner is a critical requirement for many organizations. This course enables students to improve Java programming technique and knowledge to develop applications using GUI, generics, thread programming, networking, smart phone programming including new feature in Java.
授業スケジュール
/Class schedule
1. Introduction and Java Basic Review
2. Java GUI (Events and AWT)
3. Java GUI (Swing)
4. Generics and Inner Class
5. Collections
6. Midterm Examination
7. Annotation, Documentation comments
8. Thread & Garbage Collection I
9. Thread & Garbage Collection II
10. Review on the topics studied (Generics, Annotation, and Threads)
11. Java Network I
12. Java Network II
13. Android Smart Phone Programming I
14. Android Smart Phone Programming II
教科書
/Textbook(s)
The Java Tutorial, 4th Edition, A Short Course on the Basics by  S. Zakhour, S. Hommel, J. Royal, I. Rabinovitch, T. Risser, and M. Hoeber, Sun Microsystems, 2006 (English version), 2007 (Japanese Version).
成績評価の方法・基準
/Grading method/criteria
1. Exercise Lab. and Report : 50%
2. Examination : 50%
履修上の留意点
/Note for course registration
This course covers some advanced topics of Java. Therefore, it requires that students need to know basic concept of object oriented programming including good skill in C language. The prerequisite courses are:
- Intro.Programming
- C Programming
- JAVA Programming I
参考(授業ホームページ、図書など)
/Reference (course
website, literature, etc.)
* Reference
1. Arnold, James Gosling, and David Holmes, The Java Programming Language, 4th Edition, SUN, 2006. (Japanese version by Pearson Education)
2. Ivor Horton, Java 2 JDK 5 Edition, Wiley Publishing, 2005
3. C.S. Horstmann, G. Cornell, Core Java, Sun Microsystem Press
4. J. O’Neil, Teach Yourself JAVA, McGraw-Hill
5. Kathy Sierra and Bert Bates, Head First Java (Head First) 2nd edition, 2005; Japanese edition, 2006.


Responsibility for the wording of this article lies with Student Affairs Division (Academic Affairs Section).

E-mail Address: sad-aas@u-aizu.ac.jp