Lecturer | Masashi KUBO, Associate Professor, Hisashi NAITO, Associate Professor |
---|---|

Department | Graduate School of Mathematics, 2011 Fall |

Recommended for: | School of science seniors School of mathematics masters students (3 (School of science seniors) 2 (School of mathematics masters students)・3 hours / session 1 session / week 15 weeks / semester) |

This course is a full year course. However, only the first half of the information can be found on the Nagoya University OCW website.

Our objectives of this course are to get an outline of close connections between mathematics, mathematical analysis and computer mathematics. In particular, we will be looking at algorithms from a mathematical point of view by using mathematical examples. We will also learn C language in order to write programs using algorithms introduced in the lecture.

The main objectives of this course are to understand various algorithms. In addition, we will be learning about C language in order to design programs using algorithms introduced in the lecture.

The most important thing to keep in mind when studying a programming language is that we are not aiming at getting the correct results but to write programs accurately. Therefore, it is highly recommended that you make sure you write the program accurately and apply the algorithm correctly. Also, it is important to know that there are close connections between operating system of computers and the classical style of mathematics.

Finally, I would like all of the students to understand basics of C language, algorithms and the close connection between algorithms and mathematics in this lecture. I also hope that they will understand mathematics and computers more deeply by the end of the lecture.

Our objectives of this course are to get an outline of the close connections between mathematics, mathematical analysis and computer mathematics. Our main focuses are as follows.

Firstly we will discuss the close connections between mathematics, mathematical analysis and computers considering the important role algorithms play in connecting these three fields.

Secondly, we will move on to the topic of computers and their surrounding network systems. By understanding these basics, we aim at obtaining a proper knowledge of computers and their abilities. We will then be able to design feasible algorithms considering the abilities and the limits of the computer.

Thirdly, we will be learning about C language. In order to write your own program, a solid understanding of program languages and algorithms is vital for its accuracy and credibility. Therefore we will spend the most time on these topics including the relationships between C languages and operation systems.

Finally, I would like to emphasize that this lecture is not aimed at gaining the ability to use a computer, to send e-mail or to build a homepage. If you would like to attain these abilities, or specific skills for using applications, this course is not suitable for you.

We do not require special knowledge of college level mathematics ; high-school level is sufficient. The important thing is understanding the concepts of basic mathematics, which will be key to constructing the algorithms.

The contents of this lecture are as follows.

- Basics of computers and network systems (computer literacy)
- C language

C language that meets ANSI standard is used in this lecture. The contents of the lecture will be up to the level of array, pointer and character.

- Introduction of various elementary algorithms

Our focus is on algorithms with integer values; floating-point computation is not the topic for this lecture.

The lectures on computer literacy are given in the beginning of June. This is because most of the senior students are away for teaching practice at this time. (It is true that the knowledge of computer literacy is important for teachers in general. However, the material covered in the C language and algorithms section is more difficult and it is better for them to attend those lectures.)

Our main focus is to understand the method of expression of numerical numbers within the computer. We will also look at basic algorithms such as Euclidean algorithms and Earthshines' sieve. Moreover, we will learn about computer literacy (mainly about the history and principles of computer networks) to gain a better understanding of the basics of computers.

We will usually have a lecture for about 90 to 120 minutes, and then we will have a break of 10 to 15 minutes. We will then move on to the exercise session. However, depending on the progress of the lecture, we might have a slight change of schedule. Also, class starts at 8:45. I know that it is hard for some students to wake up early to be in time for class. In fact, when I was in college, I did not attend most of the classes in the morning. However, I would like you to attend the lecture to get a better understanding.

Our objectives for this course are not to learn how to use computer applications but to learn the basics of computers and algorithms from a mathematical perspective. Therefore I would like all of you to understand the main objectives of this class and make an effort to achieve the goals of this course.

The Information Media Education Center Satellite Laboratory can provide you with software for writing C programs for undergraduate science major students. As for graduate students, the computational calculation room in the mathematics department is available.

The contents of our exercises are to write a computer program using an algorithm introduced in the lecture. All the programs have to be written in C language.

I would like you to use the standard applications provided. Using nonstandard applications could result in some problems and I am not responsible for any trouble in the exercise sessions. You must bear the responsibility for any problems.

Attendance of your class does not affect the evaluation of this course. If you have some suggestions about the lectures or exercise sessions of this course, please feel free to e-mail me. I am willing to get feed back to make my lectures better.

Session | Contents |
---|---|

1 | Introduction - Overview of the contents of the lecture - Evaluation method UNIX (1) - How to log in and log out - Password - Usage of X Window System - Usage of emacs C language (1) - Usage of C processor (1) - Easy example problems (1) - Example program 'Hello world' - Introduction to easy computation |

2 |
UNIX (2) - File system and directory - Text file and its usage - Shell - Basic commands (2) C language (2) - Usage of C processor (2) - Easy example problems (2) - Summation of 1 to 10 - Determination of odd number or even number |

3 |
Literacy (1) - Methods of expressing numerical data during computation - Subtraction method using a complement number of two C language (3) - What is program language? - C language processor - What are variables? - Declaration of integer form and assignment of value |

4 |
C language (4) - Declaration of integer form and assignment of value continued - Character type data and code - Equation and statement - Computation
- Arithmetic operation
- Bit operation - Value obtained from Equation - Assignment operation - Priority ranking of operation and combinatory rule Literacy (2) - Subtraction method using a complement number of two continued - Digital circuit and adding machines |

5 |
Literacy (3) - Subtraction method using a complement number of two continued - Digital circuit and adding machines continued - Internal expression of floating decimal point C language (5) - Computation
- Arithmetic operation
- Conditional statement- Bit operation - Value obtained from Equation - Assignment operation - Priority ranking of operation and combinatory rule - Repetition statement |

6 |
Algorithm (1) - Euclidean algorithm
- Validity of algorithm
- Evaluation of the amount of computation - Extended Euclidean algorithm - Binary Euclidean algorithm |

7 |
C language (6) - Function (1)
- Meaning of function declaration
- Classification of variables - Formatting - Memory allocation |

8 |
Literacy (4) - History of computers - Computer hardware - Computer software - Computer networks |

9 |
Literacy (5) - Computer network continued - Network literacy |

10 |
C language (7) - Array and character string |

11 |
Algorithm (2) - Earthshines' sieve - Radix conversion |

12 |
C language (8) - Pointer - Function with pointer arguments |

13 |
C language (9) - Pointer continued Algorithm (3) - Recurring algorithms |

14 |
Algorithm (4) - Recurring algorithms continued C language (10) - Input-output of file - Argument of main function |

15 |
C language (11) - Input-output of file continued - Solution for some of the Assignments |

When homework is assigned during class, the due date of the homework is next Monday evening. It is very important to do this assignment to get the basics of C language. In addition, evaluation is only based on assignments. For those who do not attend classes, you will also be informed of assignments in the lecture notes.

Grading is based only on the results of the assignments given in the lecture. Exercises given after the lecture will be collected to get an idea of the students' understanding but it will not be used for grading. Also, attendance of the class will not be considered as a factor of grading. After the 7th lecture, we will ask you to hand in mid term report, which is not considered for the final grading. However, the mid term report is mandatory for all students who are hoping to get credit for this course. No credit will be given to those who do not hand in the mid term report.You are not allowed to copy your report from other students or textbooks. No credits are given for anyone who violates this rule.

Grading will be given as followed.

C |
Minimum understanding of C language and Algorithms required (Being able to use the algorithms introduced in class and write computer programs using C language) |
---|---|

B |
Basic understanding of C language and Algorithms (Accurate understanding of the algorithms introduced in class and ability to write programs using algorithms introduced in class) |

A |
Deep understanding of C language and Algorithms (Deep understanding of the algorithms introduced in class and ability to write accurate programs applying algorithms introduced in class correctly) |

- B. W. Kernighan & D. M. Ritchie, The C Programming Language, Second Edition Prentice-Hall, Englewood Cliffs, New Jersey, 1988

- Brian W. Kernighan & Rob Pike, Unix Programming Environment (Prentice-Hall Software Series), Prentice Hall (March 1984)
- Aeleen Frisch, UNIX System Administration, O'Reilly Vlg. GmbH & Co. 1998

A Japanese version of this book is also available.

March 13, 2020