AY 2017 Undergraduate School Course Catalog

Programming

2018/01/30

Back
開講学期
/Semester
2017年度/Academic Year  前期 /First Semester
対象学年
/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, Yoshiko Ogawa, Kenta Ofuji, Wang Junbo, Evgeny Pyshkin, Yen Neil Yuwen
推奨トラック
/Recommended track
履修規程上の先修条件
/Prerequisites

更新日/Last updated on 2017/01/31
授業の概要
/Course outline
<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/P01-Englishcourse.pdf).
-------------------------------------------------------------------------------------------------------------

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 full year 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
・Basic knowledge of programming
・The ABC of C programming
・Expression and operator
・Flow of control
-Branch (if and switch, etc.)
-Loop (while and for, etc.)
・Concept and use of array
・Concept and use of function
・File manipulation with redirect/pipe
・Good programming style
We will inform you of it on the class and the homepage for a detailed schedule.
Text(s)
教科書
/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 executed every lecture)10%
・Computer exercise 30%
・Midterm exam 10%
・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 either mid-term or final examination are also considered to abandon the class.
履修上の留意点
/Note for course registration
Prerequisites : none
Other related courses which include
important concepts relevant to the course : C programming(second semester), Intro. Computer Systems(second semester)
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/2016/welcome.html


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

更新日/Last updated on 2017/01/31
授業の概要
/Course outline
<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 first semester, 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 first semester, 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)10%
・Computer exercise 30%
・Midterm exam 30%
・Final exam 30%
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 either mid-term or final examination are 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(first semester), Intro. Computer Systems(second semester), Algo.and Data Struct(2nd grade first semester)
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/2016/welcome.html


Back
開講学期
/Semester
2017年度/Academic Year  前期 /First Semester
対象学年
/Course for;
2nd year
単位数
/Credits
4.0
責任者
/Coordinator
Vitaly V. Klyuev
担当教員名
/Instructor
Tongjun Huang, Jung-pil Shin, Mohamed Hamada, Vitaly V. Klyuev, Kohei Kitazato, Yan Pei, Yuichi Yaguchi, Xin Zhu, Yutaka Watanobe
推奨トラック
/Recommended track
履修規程上の先修条件
/Prerequisites
P1 or P2

更新日/Last updated on 2017/01/27
授業の概要
/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 to objects
The Java Technology Phenomenon
The " Welcome to Java!" Application
What is an Object?
What is a Class?
Online Documentation
2. Language basis
Variables
Operators
Expressions, Statements, and Blocks
Control Flow Statements
3. Classes and objects
Classes
Constructors
Methods
Creating Objects
Using Objects
4. 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
5. Inheritance (2)
IS-A versus HAS-A relations
The Object class as a Superclass
6. 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. Polymorphism (2)
Abstract Classes  
Private and Static Methods
Order of Constructor Calls
Designing Classes
Summary of Polymorphism
9. 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
10. 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
11. Exceptions (1)
Error Handling in C
What s an Exception?
Kinds of Exceptions
Exception Handling Keywords
Catching and Handling Exceptions
12. Exceptions (2)

Exception Handling in Java
Catching Exceptions
The throws Clause
Exception Chaining
Advantages of Exceptions

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

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.

履修規程上の先修条件:P1 プログラミング入門 または P2 プログラミングC

Formal prerequisites:P1 Intro.Programming or P2 C Programing
参考(授業ホームページ、図書など)
/Reference (course
website, literature, etc.)
Course Website

References
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.


Back
開講学期
/Semester
2017年度/Academic Year  3学期 /Third Quarter
対象学年
/Course for;
2nd year
単位数
/Credits
3.0
責任者
/Coordinator
Keitaro Naruse
担当教員名
/Instructor
Jie Huang, Nobuyoshi Asai, Keitaro Naruse, Konstantin Markov, Pierre-Alain Fayolle, Igor Lubashevskiy, Yu Nakajima
推奨トラック
/Recommended track
CM,RC,BM,SE
履修規程上の先修条件
/Prerequisites
P1 or P2

更新日/Last updated on 2017/01/31
授業の概要
/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
#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
#4 Automatic memory management
#15 Summary
Detail can be changed by instructors
教科書
/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
履修上の留意点
/Note for course registration
Related courses: Programming C and programming Java
参考(授業ホームページ、図書など)
/Reference (course
website, literature, etc.)
Each of instructors will designate in a class.


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

更新日/Last updated on 2017/01/31
授業の概要
/Course outline
The course explains paradigms, models, classification, and technical points of programming languages. It will give students an opportunity to consider history of the languages and the intention of the language developers, about some well used languages. Moreover, we compare the features of various computer languages, and provide the viewpoints when learning or designing a new language. Besides discussion on essential points of various computer languages, Prolog, one of the logic programming languages, will be studied in both lectures and exercise.
授業の目的と到達目標
/Objectives and attainment
goals
The purpose of the course is to present the students concepts, models, and technical points, and features of various computer languages. By studying those pieces of knowledge, students will have a wide view, when they review the computer languages learned in precedence courses, select necessary languages for development of systems, and learning new languages in the future. In addition to learning the basic concepts and models of computer languages, one of the logic programming languages Prolog will be studied extensively to understand the way of thinking and some experiences on logic programming.
授業スケジュール
/Class schedule
(1) The outline of computer languages (1) &
Prolog: Introduction, fact
(2) The outline of computer languages (2)  
Prolog: Inference rules
(3) Computation models of computer languages (1)
Prolog: Constant and variables
(4) Computation models of computer languages(2)
Prolog: pattern matching
(5)  Example of computer languages
Prolog: Recursion
(6) Comparison of different models (1)  
Prolog: Backtrack
(7) Comparison of different models(2)
Prolog Cut
(8) Middle examination Paper test and project
(9) Some technical points of computer languages (1)  
Prolog: Input and output
(10) Some technical points of computer languages(2)
Prolog:  Operations of Database
(11) Example of computer languages(2) 
Prolog: Application, finding the shortest path
(12) Syntax of computer languages
(13) Semantics of computer language(1)
(14) Semantics of computer language (2)
(15) Review, comparison of different computer languages, the necessary for new languages
教科書
/Textbook(s)
1) PrologとAI  Prolog への入門  
I. Bratko (著), 安部 憲広 (翻訳), 近代科学社

2) プログラミング言語論
大山口 通夫、五味 弘 共著 コロナ社
成績評価の方法・基準
/Grading method/criteria
Small Test and Attendance 20%
Exercise 20%
Middle examination and project 30%
Final examination 30%
履修上の留意点
/Note for course registration
P1 Introduction to Programming

P2 Programming C

P3 Programming JAVA I

Formal prerequisites:
参考(授業ホームページ、図書など)
/Reference (course
website, literature, etc.)
参考書
コーディングを支える技術
西尾 泰和 技術評論社

http://provit.u-aizu.ac.jp/clang/


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

更新日/Last updated on 2017/01/30
授業の概要
/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, and network programming 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 develope applications using GUI, generics, thread programming, networking, smart phone programming 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
15. Android Smart Phone Programming III
16. Term Project
教科書
/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
2. Examination (Midterm and Final)
3. Term Project
4. Attendance
履修上の留意点
/Note for course registration
* Prerequisites:
- P1 Intro.Programming
- P2 C Programing
- P3 JAVA Programming I

* Other related courses:
- P4 C++ Programing
- P5 Computer Languages
- F1 Algo.and Data Struct.
- SE1 Web Engineering
- SE2 Web Programming
- SE3 Software Eng. I
- SE4 Software Eng. II
- SE5 Software Studio
- SE6 Distributed Computing
- N1 Communication Networking I
- N3 Computter Network Organizaion &Design
- S9 Computer System Engineering
参考(授業ホームページ、図書など)
/Reference (course
website, literature, etc.)
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