Course title
L00410003
Information System and System Programming

SUGAYA Midori
Course description
This course is a practical course in which you will learn the impact of descriptions on performance by programming using libraries and system calls, which are APIs that call the functions of the operating system (hereafter abbreviated as OS), which is the lowest layer of software, and the basic principles that support advanced and complex systems.
Those advanced and complex IT systems that support today's information technology are supported by advanced computer systems. Computer systems are not only made up of multiple CPUs, but also various accelerators, and are becoming more advanced and complex in the form of parallel and distributed systems. The software infrastructure that supports these computer systems includes communication middleware and operating systems.
The lectures include practical exercises, and cover topics such as files that handle variable-length data, multitasking, signals, and multithreading development, as well as network socket programming that applies these techniques, and the development of multitasking servers as an integrated technology. Through these practical exercises, etc., you will understand software development that achieves advanced sharing of memory and CPUs, high-performance servers, cloud systems, etc. You will learn about the efficient use of computer resources and reliability.
Purpose of class
The aim of this course is to understand the concept of system calls, which are an API for the operating system, and to acquire the technical skills to use them effectively.
In order to learn the technology for constructing advanced systems, it is necessary to understand the programming that abstracts the CPU and memory of the operating system, such as files, multitasking, signals, and multithreading, which are basic software technologies. In this class, based on this understanding, we will work on implementing techniques to evaluate performance and improve it. In addition, we will develop socket programming to realise virtual networks and multitasking servers that integrate these. Through this practical training, we will aim to gain a deeper understanding of software development that achieves high-performance servers, cloud computing and middleware, by understanding how to efficiently use computer resources, such as advanced sharing of memory and CPU.
Goals and objectives
  1. Understand and be able to implement the concepts of UNIX fundamentals, libraries, and system calls, which are the API of the operating system.
  2. Understand programming that abstracts the CPU and memory of the OS, such as stream processing, files, multitasking, signals, and multithreading, which are essential for advanced information processing, and be able to evaluate and improve performance.
  3. Understand network programming using socket communication and be able to design multitasking servers and clients.
  4. Design and implement multitasking servers that share variable-length data between clients in multitasking servers using socket communication.
Relationship between 'Goals and Objectives' and 'Course Outcomes'

演習レポート 最終開発課題 Total.
1. 30% 0% 30%
2. 30% 0% 30%
3. 10% 15% 25%
4. 0% 15% 15%
Total. 70% 30% -
Evaluation method and criteria
Evaluation method: 100 points for exercises and reports, with a total score of 60 points or more required to pass.
Evaluation criteria: 60 points for completing exercises and reports appropriately.
Language
Japanese(English accepted)
Class schedule

Class schedule HW assignments (Including preparation and review of the class.) Amount of Time Required
1. Introduction Overview of history, etc., setup (Ubuntu setup, starting up terminal software, using ssh, scp) 100minutes
2. Understanding of the standard C library and development environment, which are the basis for advanced programming Practical training using the distributed PDF, programming creation 150minutes
Exercise
3. What is stream processing?
Understanding of basic programming for handling variable-rate data, string manipulation, file input/output
File (high-level file)
Performance evaluation (development of analysis software)
Practical training using the distributed PDF, programming creation 100minutes
Exercise 100minutes
4. Process Control as the Basis for Multitasking
Process
- What is Multitasking?
- Process Control
Process Control as the Basis for Multitasking 100minutes
Exercise 100minutes
5. Thread control, the basis of multi-threading
Thread programming (1)
What is multi-threading?
Multi-threaded programming
Practical training using the distributed PDF, programming creation 100minutes
Exercise 100minutes
6. Thread control, the basis of multi-threading
Thread programming (2)
Avoiding deadlocks using locks and mutual exclusion
Practical training using the distributed PDF, programming creation 100minutes
Exercise 100minutes
7. Techniques for implementing asynchronous distributed programming
Time, interrupts, signals
Practical training using the distributed PDF, programming 100minutes
Exercise 100minutes
8. Basic understanding of network implementation techniques
Socket programming (1)
・Client-server communication
・Developing client programs
Practical training using the distributed PDF, programming 100minutes
Exercise 100minutes
9. Basic understanding of network implementation technology
Socket programming (2)
・Server program development
・Client-server program development
Practical training using the distributed PDF, programming 100minutes
Exercise 100minutes
10. Understanding the application of network implementation technology
Socket programming (3)
・Advanced socket programming
・Network programming (multitasking server)
Practical training using the distributed PDF, programming 100minutes
Exercise 100minutes
11. Understanding the application of network implementation technology
Discussion of ideas for multitasking server services using sockets
Design 200minutes
12. Practical Development
Multitasking server service using sockets, design and implementation
Development 200minutes
13. Practical Development
Multitasking server service using sockets, design and implementation
Development 300minutes
14. Practical Development
Multitasking server service using sockets, presentation
Presentation of the program created, submission of a report 300minutes
Total. - - 2850minutes
Feedback on exams, assignments, etc.
ways of feedback specific contents about "Other"
授業内と授業外でフィードバックを行います。 課題やレポートで提出した内容について,基本的には授業中,もしくは次の授業などで解説を行う.授業以外で不明なことは Slack などで対応する.
Textbooks and reference materials
1. Introduction to UNIX System Programming in C, Kiyotaka Kono, Ohmsha, 2003
2. Unix/Linux Programming: Theory and Practice, Bruce Molay, translated by Takahiro Nagao, ASCII, 2008
Reference book: ‘Magical C Programming Exercises’, Kimio Kuramitsu, Corona Shoten
Prerequisites
Introduction to Programming 1 and 2, Operating Systems
Office hours and How to contact professors for questions
  • 講義前後、あるいは電子メールで随時
Regionally-oriented
Non-regionally-oriented course
Development of social and professional independence
  • Course that cultivates an ability for utilizing knowledge
  • Course that cultivates a basic self-management skills
  • Course that cultivates a basic problem-solving skills
Active-learning course
More than one class is interactive
Course by professor with work experience
Work experience Work experience and relevance to the course content if applicable
Applicable I will convey my experience and applications in lectures from a broad perspective.
Education related SDGs:the Sustainable Development Goals
  • 4.QUALITY EDUCATION
  • 9.INDUSTRY, INNOVATION AND INFRASTRUCTURE
  • 17.PARTNERSHIPS FOR THE GOALS
Last modified : Tue Mar 18 04:07:02 JST 2025