מבוא למדעי המחשב הרצאה 1: מבוא כללי

Slides:



Advertisements
Similar presentations
CS1010 Programming Methodology
Advertisements

8 Algorithms Foundations of Computer Science ã Cengage Learning.
Computer Software & Software Development H&K Chapter 1 Instructor – Gokcen Cilingir Cpt S 121 (June 20, 2011) Washington State University.
Lesson 19 Recursion CS1 -- John Cole1. Recursion 1. (n) The act of cursing again. 2. see recursion 3. The concept of functions which can call themselves.
Chapter 1: An Introduction to Computer Science Invitation to Computer Science, C++ Version, Third Edition.
Lecture 14 Go over midterm results Algorithms Efficiency More on prime numbers.
© Love Ekenberg The Algorithm Concept, Big O Notation, and Program Verification Love Ekenberg.
1. By the end of this lecture you should be able … To describe in general terms how computers function To describe the fetch-execute cycle To explain.
UNIVERSITY OF SOUTH CAROLINA Department of Computer Science and Engineering Design and Analysis of Algorithms - Chapter 11 Algorithm An algorithm is a.
TK3043 Analysis and Design of Algorithms Introduction to Algorithms.
Writing algorithms using the while-statement. Previously discussed Syntax of while-statement:
Design and Analysis of Algorithms
CS190/295 Programming in Python for Life Sciences: Lecture 1 Instructor: Xiaohui Xie University of California, Irvine.
Introduction Dr. Ying Lu RAIK 283: Data Structures & Algorithms.
1.1 1 Introduction Foundations of Computer Science  Cengage Learning.
CS223 Algorithms D-Term 2013 Instructor: Mohamed Eltabakh WPI, CS Introduction Slide 1.
1 TOPIC 1 INTRODUCTION TO COMPUTER SCIENCE AND PROGRAMMING Topic 1 Introduction to Computer Science and Programming Notes adapted from Introduction to.
Timothy Foster CSCE 221H Pioneer Computer Artist ( present)
Lesson 1b: Computer Systems and Program Development CPS118.
CS 390 Introduction to Theoretical Computer Science.
What does a computer program look like: a general overview.
Fundamental Programming: Fundamental Programming K.Chinnasarn, Ph.D.
Algorithms, Part 1 of 3 Topics  Definition of an Algorithm  Algorithm Examples  Syntax versus Semantics Reading  Sections
Introduction to Computer Application (IC) MH Room 517 Time : 7:00-9:30pm.
1 Section 2.1 Algorithms. 2 Algorithm A finite set of precise instructions for performing a computation or for solving a problem.
Algorithms 1.Notion of an algorithm 2.Properties of an algorithm 3.The GCD algorithm 4.Correctness of the GCD algorithm 5.Termination of the GCD algorithm.
Data Structures and Algorithms Dr. Tehseen Zia Assistant Professor Dept. Computer Science and IT University of Sargodha Lecture 1.
UNIT-I INTRODUCTION ANALYSIS AND DESIGN OF ALGORITHMS CHAPTER 1:
SNU OOPSLA Lab. 1 Great Ideas of CS with Java Part 1 WWW & Computer programming in the language Java Ch 1: The World Wide Web Ch 2: Watch out: Here comes.
Data Structure Introduction Dr. Bernard Chen Ph.D. University of Central Arkansas Fall 2010.
CDA 3100 Fall2009. Special Thanks Thanks to Dr. Xiuwen Liu for letting me use his class slides and other materials as a base for this course.
Computer Science/Ch. Algorithmic Foundation of CS 4-1 Chapter 4 Chapter 4 Algorithmic Foundation of Computer Science.
Course Aims This course will help you understand the latest technologies & how they work. You will lean how to develop computer programs to solve problems.
Sorting Algorithms. Algorithms, revisited What is an algorithm? Wikipedia Definition: an algorithm is a definite list of well-defined instructions for.
Chapter I: Introduction to Computer Science. Computer: is a machine that accepts input data, processes the data and creates output data. This is a specific-purpose.
Introduction to Algorithms
Recursion The programs discussed so far have been structured as functions that invoke one another in a disciplined manner For some problems it is useful.
Problem Solving & Computer Programming
CS1010 Programming Methodology
Algorithms and Problem Solving
Computer Organization and Machine Language Programming CPTG 245
Algorithms, Part 1 of 3 The First step in the programming process
Formal Foundations-II [Theory of Automata]
Chapter 15 Recursion.
Topic: Introduction to Computing Science and Programming + Algorithm
CSE3002 Team Project TOPIC TITLE
Chapter 15 Recursion.
Introduction to Computing
C++ Programming: From Problem Analysis to Program Design
CSE 20: Discrete Mathematics for Computer Science Prof. Shachar Lovett
CDA 3100 Summer 2011.
COMS W1004 Introduction to Computer Science and Programming in Java
CSE4102 Team Project Prof. Steven A. Demurjian
CS190/295 Programming in Python for Life Sciences: Lecture 1
Foundations of Computer Science
CDA 3100 Spring 2009.
CDA 3100 Spring 2010.
The Basics of Recursion
Algorithms and Problem Solving
Introduction to Algorithms
Introduction to Computing
Lecture 6 Architecture Algorithm Defin ition. Algorithm 1stDefinition: Sequence of steps that can be taken to solve a problem 2ndDefinition: The step.
Basic Concepts of Algorithm
Mathematical Analysis of Algorithms
Professor: Shereen Khoja
Design and Analysis of Algorithms
CSE4102/5102 Team Project TOPIC TITLE
Design and Analysis of Algorithms
Presentation transcript:

מבוא למדעי המחשב הרצאה 1: מבוא כללי מה זה מדעי המחשב – מה לומדים בתואר ראשון. מטרות קורס המבוא. דוגמה - אלגוריתם בן אלפיים שנים (לפחות)

מדעי המחשב מדעי המחשב הם נקודת המפגש של מתמטיקה, הנדסה ומדעי הטבע. חוקרים את ההיבטים התיאורטיים, והמעשיים של חישוביות ועיבוד מידע משתמשים בגישות של עיבוד מידע וחישוביות כדי לענות על שאלות מדעיות וטכנולוגיות. מהווים את הבסיס העיקרי לטכנולוגיה העילית. שעות קבלה אתר הקורס אימייל (רק של הקורס) פורום עזרה במעבדה צוות הקורס מעבדות CS עבור ה-Submission system מרכז החישובים עבור חשבונות ומחשבים 3. מטרת הקורס: מפגש ראשון עם עקרונות בסיסיים בעולם מדעי המחשב. מושג האלגוריתם, תכנון האלגוריתם, תכנות ב- Java, רקורסיה, מבנה נתונים, ועוד 4. מבנה הקורס ספרים – יש, אך אין ספר מלווה צריך להשיג סיסמאות ממרכז חישובים כמה מילים על דף המידע ההרצאות והתרגולים באתר הקורס כללי משחק 70+(20)+10 6 מטלות לדבר על התרגילונים (קוויזים) עזרה במעבדה במהלך השנה העתקות לכבות טלפונים 02:56:45

מדעי המחשב ותכנות תכנות הוא תחום מעשי חשוב של מדעי המחשב. בעל היבטים תיאורטיים עמוקים. מפרנס הרבה בוגרי מדעי המחשב ועוזר במחקר לאחרים. לכן, מקבל מקום חשוב (אבל לא עיקרי) בלימודי מדעי המחשב. שעות קבלה אתר הקורס אימייל (רק של הקורס) פורום עזרה במעבדה צוות הקורס מעבדות CS עבור ה-Submission system מרכז החישובים עבור חשבונות ומחשבים 3. מטרת הקורס: מפגש ראשון עם עקרונות בסיסיים בעולם מדעי המחשב. מושג האלגוריתם, תכנון האלגוריתם, תכנות ב- Java, רקורסיה, מבנה נתונים, ועוד 4. מבנה הקורס ספרים – יש, אך אין ספר מלווה צריך להשיג סיסמאות ממרכז חישובים כמה מילים על דף המידע ההרצאות והתרגולים באתר הקורס כללי משחק 70+(20)+10 6 מטלות לדבר על התרגילונים (קוויזים) עזרה במעבדה במהלך השנה העתקות לכבות טלפונים 02:56:45

המחלקה למדעי המחשב באוניברסיטת בן גוריון קהילה של כאלף אנשים: סטודנטים לכל התארים, וחברי סגל לומדים, מלמדים, וחוקרים מגוון רחב של נושאים תיאורטיים ומעשיים הכוללים: תיאוריה של מדעי המחשב, הצפנה, גיאומטריה חישובית, גרפיקה ממוחשבת, ראיה ממוחשבת, עיבוד מקבילי, עיבוד שפה טבעית, הנדסת תוכנה, לימוד ממוכן, וביואינפורמטיקה. שיתוף פעולה במחקר והוראה עם מתמטיקאים מהנדסים ואנשי מדעי הטבע הרוח והחברה. שעות קבלה אתר הקורס אימייל (רק של הקורס) פורום עזרה במעבדה צוות הקורס מעבדות CS עבור ה-Submission system מרכז החישובים עבור חשבונות ומחשבים 3. מטרת הקורס: מפגש ראשון עם עקרונות בסיסיים בעולם מדעי המחשב. מושג האלגוריתם, תכנון האלגוריתם, תכנות ב- Java, רקורסיה, מבנה נתונים, ועוד 4. מבנה הקורס ספרים – יש, אך אין ספר מלווה צריך להשיג סיסמאות ממרכז חישובים כמה מילים על דף המידע ההרצאות והתרגולים באתר הקורס כללי משחק 70+(20)+10 6 מטלות לדבר על התרגילונים (קוויזים) עזרה במעבדה במהלך השנה העתקות לכבות טלפונים 02:56:45

תואר ראשון במדעי המחשב 02:56:45 שעות קבלה אתר הקורס אימייל (רק של הקורס) פורום עזרה במעבדה צוות הקורס מעבדות CS עבור ה-Submission system מרכז החישובים עבור חשבונות ומחשבים 3. מטרת הקורס: מפגש ראשון עם עקרונות בסיסיים בעולם מדעי המחשב. מושג האלגוריתם, תכנון האלגוריתם, תכנות ב- Java, רקורסיה, מבנה נתונים, ועוד 4. מבנה הקורס ספרים – יש, אך אין ספר מלווה צריך להשיג סיסמאות ממרכז חישובים כמה מילים על דף המידע ההרצאות והתרגולים באתר הקורס כללי משחק 70+(20)+10 6 מטלות לדבר על התרגילונים (קוויזים) עזרה במעבדה במהלך השנה העתקות לכבות טלפונים 02:56:45

מטרת הקורס מפגש ראשון עם עקרונות בסיסיים בעולם מדעי המחשב. מושג האלגוריתם, תכנון האלגוריתם, תכנות ב- Java, רקורסיה, מבנה נתונים, ועוד לא קורס תכנות. מטרת הקורס: מפגש ראשון עם עקרונות בסיסיים בעולם מדעי המחשב. מושג האלגוריתם, תכנון האלגוריתם, תכנות ב- Java, רקורסיה, מבנה נתונים, ועוד “To introduce and to exercise the basic concepts in Computer Science, object-oriented programming, and programming principles, using the Java programming language.” הכרות: יש כאן מגוון של תלמידים – תוכניות לימודים שונות רקע שונה רקע במחשבים ו.או במתמטיקה – לפעמים עוזר, אבל לא נדרש This is not a course on Java, even though we spend time learning this language It’s a course introducing Computer Science, which also means introducing programming (principles are better understood when they are concrete) Java is a means to what we want to accomplish, not an end in itself 02:56:45

הכרות דף המידע אתר הקורס: http://www.cs.bgu.ac.il/~intro111 מצגות פורום דואר: intro111@cs.bgu.ac.il שעות קבלה (לנצל!!) עזרה במעבדה שעות קבלה אתר הקורס אימייל (רק של הקורס) פורום עזרה במעבדה צוות הקורס מעבדות CS עבור ה-Submission system מרכז החישובים עבור חשבונות ומחשבים 3. מטרת הקורס: מפגש ראשון עם עקרונות בסיסיים בעולם מדעי המחשב. מושג האלגוריתם, תכנון האלגוריתם, תכנות ב- Java, רקורסיה, מבנה נתונים, ועוד 4. מבנה הקורס ספרים – יש, אך אין ספר מלווה צריך להשיג סיסמאות ממרכז חישובים כמה מילים על דף המידע ההרצאות והתרגולים באתר הקורס כללי משחק 70+(20)+10 6 מטלות לדבר על התרגילונים (קוויזים) עזרה במעבדה במהלך השנה העתקות לכבות טלפונים 02:56:45

שאלות שכיחות ש: אין לי שום ידע במחשבים ותכנות. האם יש לי סיכוי להצליח בקורס? משיחות המסדרון הבנתי שכולם חוץ ממני כבר מתכנתים מהגן. ת: כן, בהחלט. הקורס אינו מניח שום ידע מוקדם. כל שנה מסיימים את הקורס (והתואר) בהצלחה רבה מאות סטודנטים שהגיעו ללא רקע מוקדם. מטרת הקורס: מפגש ראשון עם עקרונות בסיסיים בעולם מדעי המחשב. מושג האלגוריתם, תכנון האלגוריתם, תכנות ב- Java, רקורסיה, מבנה נתונים, ועוד “To introduce and to exercise the basic concepts in Computer Science, object-oriented programming, and programming principles, using the Java programming language.” הכרות: יש כאן מגוון של תלמידים – תוכניות לימודים שונות רקע שונה רקע במחשבים ו.או במתמטיקה – לפעמים עוזר, אבל לא נדרש This is not a course on Java, even though we spend time learning this language It’s a course introducing Computer Science, which also means introducing programming (principles are better understood when they are concrete) Java is a means to what we want to accomplish, not an end in itself 02:56:45

שאלות שכיחות ש: אני מתכנת מהגן. יש לי 7 נקודות בגרות במדעי המחשב וביליתי ארבע שנים ביחידת מחשוב שאסור לי אפילו לחשוב על שמה. האם יש לי מה ללמוד בקורס הזה? ת: כנראה שכן. ברור שרקע מוקדם עוזר, אבל מניסיוננו (עשרות תלמידים בשנה) גם לבעלי הרקע הקודם יש עוד די הרבה מה ללמוד בקורס. מטרת הקורס: מפגש ראשון עם עקרונות בסיסיים בעולם מדעי המחשב. מושג האלגוריתם, תכנון האלגוריתם, תכנות ב- Java, רקורסיה, מבנה נתונים, ועוד “To introduce and to exercise the basic concepts in Computer Science, object-oriented programming, and programming principles, using the Java programming language.” הכרות: יש כאן מגוון של תלמידים – תוכניות לימודים שונות רקע שונה רקע במחשבים ו.או במתמטיקה – לפעמים עוזר, אבל לא נדרש This is not a course on Java, even though we spend time learning this language It’s a course introducing Computer Science, which also means introducing programming (principles are better understood when they are concrete) Java is a means to what we want to accomplish, not an end in itself 02:56:46

מבנה הקורס עקרונות תיאורטיים ומבנים כלליים הרצאות עקרונות תיאורטיים ומבנים כלליים חזרה מפורטת על העקרונות, דוגמאות תרגולים כיסוי מפורט של הדוגמאות,פתרונות פרקטיים מעבדות מבנה הקורס: הרצאות, תרגולים, תרגילונים, עבודות הגשה, עזרה במעבדה, שעות קבלה ספרים – יש, אך אין ספר מלווה צריך להשיג סיסמאות ממרכז חישובים כמה מילים על דף המידע ההרצאות והתרגולים באתר הקורס כללי משחק 70+20+10 5 מטלות (אולי 80+10+10 אם הבוחן נמוך מהמבחן) ממוצע המבחן וממוצע עבודות ההגשה חייב לעבור (לפחות 56). אסור עבודה עם ציון 0. הפניה לדף באתר המתאר את החוקים לגבי תרגילים לדבר על התרגילונים (קוויזים) להיות פעיל בקורס העתקות לכבות טלפונים מטלת מעבדה - השבוע עבודה מספר 1 – יום ראשון הבא Each layer of the course has a different role Lectures: High-level concepts, overall structures Tirgulim: Detailed coverage of concepts, examples Labs and targilim: Very detailed problems, practical solutions Targilim and labs Very detailed problems, practical solutions ! תרגילים 02:56:46

מושגים בסיסיים מה זה מחשב? כלי אלקטרוני, ניתן לתכנות, שנועד לאכסון, דליה ועיבוד של מידע חומרה (ברזלים): זיכרון,מעבד, קלט, פלט,... תוכנה תוכניות מחשב שמשתמשות בחומרה בהינתן בעיה של עיבוד (נתונים) או חישוב אלגוריתם "מתכון" לפתירת הבעיה תוכנית מחשב אמצעי להביע את האלגוריתם בפני המחשב מה זה מחשב? הגדרה: כלי אלקטרוני, ניתן לתכנות, שנועד לאכסון, דליה ועיבוד של מידע חומרה (ברזלים): זיכרון,מעבד, קלט, פלט,... Hardware is anything you can touch. Chips, boxes, keyboard,screen,discs,cables, mouse,etc. The hardware components need to be given specific orders in order to operate. A program is a collection of such orders that the harware will execute one after the other. Software includes the programs plus the information (data) used by the programs. תוכנה: מערכת הפעלה, קומפיילר, סביבת הרצה,... Together, the hardware and software make up a tool that can be used to solve problems. בעיה – שרוצים לפתור בעזרת מחשב אלגוריתם – "מתכון" לפתירת הבעיה תוכנית – אמצעי להביע את האלגוריתם בפני המחשב שפות מחשב (סוגים, הידור, ... ) דוגמה: בעיה – למצוא מספר טלפון של מישהו האם זו הבעיה הנכונה? עדיף " למצוא מספר טלפון" אלגוריתם – א. נשאל אותו (את מי?). ב. ליניארי ג. בינארי. Exemplify linear search and binary search on a phone book. (מבנה הנתונים – ממוין?) 02:56:46

תאור סכמתי – מחשב (חומרה) אמצעי קלט אמצעי פלט מעבד CPU Calm the students down by saying this is all we need in this course as far as hardware goes. We will focus on software in this course. This course is intended for people with no background in programming, you will have to work hard though. בקורס זה לא ממש נתעניין בחומרה. מדי פעם נתייחס אליו באופן רעיוני – כאל מודל CPU(Central Processing Unit) – the device that executes the orders of the program. Memory: main memory holds the software while the orders are being executed by the CPU. secondary memory holds the programs and data for long term. Example: hard disk, disk on key, CD, etc. Input: keyboard, network cable, wireless I/O, discs, etc. Output: console (screen), printer, discs, etc. זכרון 02:56:46

אלגוריתם סידרת פעולות לביצוע המובילה לפתרון בעיה תיאור סופי לא מתייחס לנתונים עצמם קלט, פלט דוגמה מהחיים - מתכון לתבשיל. תרשים זרימה !!! "מתכון" לפתירת בעיה (של עיבוד נתונים) קבוצת הנחיות לביצוע משימה מסוימת המחשב אמור לפתור את הבעיה על סמך האלגוריתם כיצד לתאר אלגוריתם: אנגלית/עברית תרשים כל שפה ומבנה שיאפשר לדייק – להתבטא חד משמעית 02:56:46

אלגוריתם – אוסף הוראות סופי קלט: 0<X שלם קלט: 0<X שלם counter  1 כן האם X<10 ? פלט: 1 האם X<10 ? כן לא פלט: counter כן האם 0X<10 ? פלט: 2 An algorithm can be represented as a flow chart, we will later in this lecture exemplify this in detail. דוגמה: הבעיה – בהנתן מס' שלם וחיובי, כמה ספרות יש לו??? לא אלגוריתם: אם המספר קטן מ 10, אם קטן מ 100 וכו'. the problem with this option is that the input can be any positive integer (infinite) you can’t write a program that covers all divisions in advance… אח"כ הצגת אלג' ובו מחלקים ב 10 ומקדמים מונה (חלוקת שלמים DIV) לא counter  counter+1 לא כן האם 00X<10 ? פלט: 3 02:56:46 X  X/10 לא ...

תזכורת n מחלק את m אם ורק אם קיים z כך ש-m=n*z 02:56:46 מה זה GCD ? Greatest Common divisor דוגמא Example: what is the greatest common divisor of 48 and 30? 48 :: 1,2,3, 4,6,8,12,16,24,48 30 :: 1,2,3, 5,6,10,15,30 משותפים: 1 2 3 6 משותף מקסימאלי 6 לכל שני מספרים שלמים חיוביים, קיים GCD הפסקה 02:56:46

דוגמא לבעיה: GCD Greatest Common Divisor מצא את המחלק המשותף המקסימאלי של שני מספרים שלמים חיוביים. פורמלית: קלט: שני מספרים שלמים, חיוביים, mו- n פלט: GCD(m,n) דוגמה: GCD(30,48)=6 מה זה GCD ? Greatest Common divisor דוגמא Example: what is the greatest common divisor of 48 and 30? 48 :: 1,2,3, 4,6,8,12,16,24,48 30 :: 1,2,3, 5,6,10,15,30 משותפים: 1 2 3 6 משותף מקסימאלי 6 לכל שני מספרים שלמים חיוביים, קיים GCD הפסקה 02:56:46

איך מוצאים GCD? פתרון נאיבי קלט: m,n שלמיםm, 0<n , > 0 i  m אם i מחלק אתm וגם את n עצור (פלט i) אחרת i  i-1 חזור ל- 3 קודם לתאר את הרעיון במילים. אח"כ: תרשים זרימה התאור הוא סופי קלט m,n חיוביים שלמים אין התיחסות לערכים ספציפיים של m,n (עובד לכל הערכים האפשריים) האם האלגוריתם עוצר? מדוע? כן – כי יש מחלק משותף ולא נפספס אותו (דיון) אחד תמיד מחלק משותף האם זה נכון? מדוע? כן – כי שנעצור I מחלק משותף ואין אחר גדול ממנו (דיון) אפשר להחליף את 2 ב: I = min(m,n) This yields a more efficient algorithm 02:56:46

הצגת האלגוריתם כתרשים זרימה קלט: m,n>0 i m האם iמחלק את m וגםi מחלק את n? כן פלט:i בהתחלה: I  m ניתן גם לרשום I <- min (m,n) לא i i-1 02:56:46

5 תכונות לאלגוריתם על-פי Knuth: סופיות (עצירה) מוגדרות (כל פעולה צריכה להיות מובנת חד משמעית) קלט (אפס או יותר) פלט (לפחות אחד) אפקטיביות – להיות בר ביצוע (ניתן לפרק לסדרה של פעולות פשוטות מספיק שאדם יכול לעשותם עם נייר ועפרון). קלט כולל בעצם ספספיקציה פלט כולל נכונות אפקטיביות של הפעולות באלגוריתם Effectiveness, according to Knuth, means that the algorithm can be partitioned into small steps such that each step can in turn be solved by a person using a pencil and paper. This issue perhaps regards the practicality of the algorithm. It is not enough to require that it halts. It has to halt fast enough to be practical for the purpose for which it was designed. הדגם על האלגוריתם הקודם Knuth (1968, 1973) has given a list of five properties that are widely accepted as requirements for an algorithm: Finiteness: "An algorithm must always terminate after a finite number of steps" Definiteness: "Each step of an algorithm must be precisely defined; the actions to be carried out must be rigorously and unambiguously specified for each case" Input: "...quantities which are given to it initially before the algorithm begins. These inputs are taken from specified sets of objects" Output: "...quantities which have a specified relation to the inputs" Effectiveness: "... all of the operations to be performed in the algorithm must be sufficiently basic that they can in principle be done exactly and in a finite length of time by a man using paper and pencil" 02:56:46

Donald E. Knuth Born in Milwaukee, Wisconsin, he received his bachelor's degree and master's degree in mathematics (simultaneously, his B.S. work being regarded as deserving a master's degree) in 1960 at the Case Institute of Technology. In 1963, he earned a Ph.D. in mathematics from the California Institute of Technology, where he became a professor and began work on The Art of Computer Programming, originally planned to be a single book, and then planned as a seven-volume series. In 1968, he published the first volume. That same year, he joined the faculty of Stanford University. In 1971, Knuth was the recipient of the first ACM Grace Murray Hopper Award. He has received various other awards including the Turing Award, the National Medal of Science, the John von Neumann Medal and the Kyoto Prize. After producing the third volume of his series in 1976, he expressed such frustration with the nascent state of the then newly developed electronic publishing tools (esp. those which provided input to phototypesetters) that he took time out to work on typesetting and created the TeX and METAFONT tools. In recognition of Knuth's contributions to the field of computer science, in 1990 he was awarded the singular academic title of Professor of The Art of Computer Programming, which has since been revised to Professor Emeritus of The Art of Computer Programming. In 1992 he became an associate of the French Academy of Sciences. Also that year, he retired from regular research and teaching at Stanford University in order to finish The Art of Computer Programming. In 2003 he was elected as a foreign member of the Royal Society. As of 2004, the first three volumes of his series have been re-issued, and Knuth is currently working on volume four, excerpts of which are released periodically on his website. Meanwhile, Knuth gives informal lectures a few times a year at Stanford University, which he calls Computer Musings. He is also a visiting professor at the Oxford University Computing Laboratory in the United Kingdom. 02:56:46

האם התכונות האלו מתקיימות באלגוריתם הפשוט למציאת GCD כדי להוכיח טענות אלו נשתמש : תנאי קדם (pre-condition) – n ו- m שלמים חיוביים. תכונות של GCD - בהינתן n ו- m שלמים חיוביים Min(n,m) GCD(n,m) ≤ 1 הוא מחלק משותף (אולי הגדול ביותר ואולי לא) של כל שני מספרים שלמים חיוביים. שמורה (invariant)- i≥GCD(n,m) תנאי הלולאה – i אינו מחלק את m וגם לא את n תנאי בתר (post-conduition) - i=GCD(n,m) קלט כולל בעצם ספספיקציה פלט כולל נכונות אפקטיביות של הפעולות באלגוריתם Effectiveness, according to Knuth, means that the algorithm can be partitioned into small steps such that each step can in turn be solved by a person using a pencil and paper. This issue perhaps regards the practicality of the algorithm. It is not enough to require that it halts. It has to halt fast enough to be practical for the purpose for which it was designed. הדגם על האלגוריתם הקודם Knuth (1968, 1973) has given a list of five properties that are widely accepted as requirements for an algorithm: Finiteness: "An algorithm must always terminate after a finite number of steps" Definiteness: "Each step of an algorithm must be precisely defined; the actions to be carried out must be rigorously and unambiguously specified for each case" Input: "...quantities which are given to it initially before the algorithm begins. These inputs are taken from specified sets of objects" Output: "...quantities which have a specified relation to the inputs" Effectiveness: "... all of the operations to be performed in the algorithm must be sufficiently basic that they can in principle be done exactly and in a finite length of time by a man using paper and pencil" 02:56:46

תיאור נוסף של אותו אלגוריתם קלט: m,n שלמיםm, 0<n , > 0 i  m כל עוד (לא מתקיים: i מחלק את m וגם את(n i  i-1 עצור, פלט: i תנאי הלולאה טענת קדם pre-cond. טענה נשמרת invariant גוף הלולאה טענת בתר post-cond. 02:56:46

הוכחת עצירה נניח ללא הגבלת הכלליות m<n אם m=1 אזי לפני הכניסה ללולאה גם i=1 והוא מחלק את m ו- n. לכן תנאי הלולאה לא יתקיים אף פעם והתוכנית תסתיים מיד. אם m>1 אזי לפני הכניסה ללולאה i=m הוא שלם חיובי גדול מ-1 כל צעד מקטין את i ב- 1. ולכן במקרה הגרוע ביותר אחרי מספר סופי של צעדים יתקיים i=1 ותנאי הלולאה לא יתקיים (כי 1 מחלק כל מספר). קלט כולל בעצם ספספיקציה פלט כולל נכונות אפקטיביות של הפעולות באלגוריתם Effectiveness, according to Knuth, means that the algorithm can be partitioned into small steps such that each step can in turn be solved by a person using a pencil and paper. This issue perhaps regards the practicality of the algorithm. It is not enough to require that it halts. It has to halt fast enough to be practical for the purpose for which it was designed. הדגם על האלגוריתם הקודם Knuth (1968, 1973) has given a list of five properties that are widely accepted as requirements for an algorithm: Finiteness: "An algorithm must always terminate after a finite number of steps" Definiteness: "Each step of an algorithm must be precisely defined; the actions to be carried out must be rigorously and unambiguously specified for each case" Input: "...quantities which are given to it initially before the algorithm begins. These inputs are taken from specified sets of objects" Output: "...quantities which have a specified relation to the inputs" Effectiveness: "... all of the operations to be performed in the algorithm must be sufficiently basic that they can in principle be done exactly and in a finite length of time by a man using paper and pencil" שאלה: מה אם n≤m? 02:56:46

הוכחת נכונות נניח לרגע שהשמורה מתקיימת כלומר i≥GCD(n,m) בכל שלב מאז ש i הוגדר לראשונה. אם הגענו לסוף הריצה הרי שתנאי הלולאה אינו מתקיים כלומר i מחלק את m ו- n. נניח בשלילה שתנאי הבתר אינו מתקיים כלומר בסוף הריצה i ≠ GCD(n,m) . מהשמורה נובע לכן i>GCD(n,m) סתירה. נותר רק להוכיח שהשמורה מתקיימת. קלט כולל בעצם ספספיקציה פלט כולל נכונות אפקטיביות של הפעולות באלגוריתם Effectiveness, according to Knuth, means that the algorithm can be partitioned into small steps such that each step can in turn be solved by a person using a pencil and paper. This issue perhaps regards the practicality of the algorithm. It is not enough to require that it halts. It has to halt fast enough to be practical for the purpose for which it was designed. הדגם על האלגוריתם הקודם Knuth (1968, 1973) has given a list of five properties that are widely accepted as requirements for an algorithm: Finiteness: "An algorithm must always terminate after a finite number of steps" Definiteness: "Each step of an algorithm must be precisely defined; the actions to be carried out must be rigorously and unambiguously specified for each case" Input: "...quantities which are given to it initially before the algorithm begins. These inputs are taken from specified sets of objects" Output: "...quantities which have a specified relation to the inputs" Effectiveness: "... all of the operations to be performed in the algorithm must be sufficiently basic that they can in principle be done exactly and in a finite length of time by a man using paper and pencil" תרגיל: הוכיחו לעצמכם את נכונות השמורה. 02:56:46

הגדרה - % פעולת מציאת השארית (modulo). דוגמאות: 7%3=1 3%7=3 8%2=0 בפרט m%i = 0 פירושו i מחלק את m מה זה GCD ? Greatest Common divisor דוגמא Example: what is the greatest common divisor of 48 and 30? 48 :: 1,2,3, 4,6,8,12,16,24,48 30 :: 1,2,3, 5,6,10,15,30 משותפים: 1 2 3 6 משותף מקסימאלי 6 לכל שני מספרים שלמים חיוביים, קיים GCD הפסקה 02:56:46

האלגוריתם של אוקלידס קלט: שלמיםm, 0<n , > 0 i  m j  n temp  j%i j  i i  temp עצור, פלט: j דוגמה j i j%i 48 30 18 18 12 12 6 6 0 6 0 We will now show an alternative algorithm for computing GCD which is called Euclide’s algorithm. להסביר % דוגמאות שונות: 3%7 7%3 תבנית ביצים 8%2 דוגמת הרצה N M 30 48 18 30 12 18 6 12 ואם נחליף את m,n? דוגנמת הרצה... מתחלפים מיד האם כדאי להחליף??? בדיקת 5 התכונות Input: m, n Output: GCD(m,n) Final: we see that the remainder gets smaller and smaller in each iteration (otherwise the smaller replaces the larger), this is the intuition and a formal proof will be given in the next slides. Effectiveness: each step is one machine order Correctness will be proven in the next slide. נראה כי אלגוריתם זה יצטרך לבצע פחות "סיבובים" לפני שימצא את התשובה מאשר האלגוריתם הנאיבי, כי מתקדם בקפיצות הולכות וקטנות 02:56:46

Euclid of Alexandria 325 BC - 265 BC Euclid of Alexandria is the most prominent mathematician of antiquity best known for his treatise on mathematics The Elements. The long lasting nature of The Elements must make Euclid the leading mathematics teacher of all time. However little is known of Euclid's life except that he taught at Alexandria in Egypt. 02:56:46

הצצה על Java import java.util.Scanner; public class GCD { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int m = scanner.nextInt(); int n = scanner.nextInt(); int i = m; int j = n; while (i != 0) { int temp = j%i; j = i; i = temp; } System.out.println("GCD = "+j); לבית: וודאו את הבנת נכונות האלגוריתם של אוקלידס רשמו תרשים זרימה שלו מטלת מעבדה ראשונה: להגשה באמצע השבוע הבא מטלה ראשונה באמצע השבוע הבא להכנס לאתר לקרוא הודעות באופן קבוע מייק: בסוף חוזרים ל"מה זה מחשב??" כלי שבאמצעותו ניתן לפתור בעיות באמצעות אלגוריתמים 02:56:46

כללי המשחק הציון בקורס ניתן לפי : א. מבחן ב. בוחן אמצע סמסטר ג. עבודות ד. תרגילונים העבודות להגשה ביחידים או בזוגות. ניתן להגיש גם בקבוצות גדולות יותר אבל אז הציון מתחלק ביחס למספר המשתתפים. כלומר רביעייה תקבל חצי מהציון שיקבלו יחיד או זוג. ייחשבו 4 העבודות הטובות ביותר מתוך חמש שינתנו לאורך הסמסטר. הבוחן אינו חובה לבית: וודאו את הבנת נכונות האלגוריתם של אוקלידס רשמו תרשים זרימה שלו מטלת מעבדה ראשונה: להגשה באמצע השבוע הבא מטלה ראשונה באמצע השבוע הבא להכנס לאתר לקרוא הודעות באופן קבוע מייק: בסוף חוזרים ל"מה זה מחשב??" כלי שבאמצעותו ניתן לפתור בעיות באמצעות אלגוריתמים 02:56:46

כללי המשחק הציון לתלמידים שיקבלו במבחן ציון 56 או למטה מזה, יהיה ציון המבחן לכל השאר: הציון לתלמידים שייגשו לבוחן  Exam*0.66 + Midterm*0.2 + Assignments*0.12 + quizes*0.02 + 3 הציון לתלמידים שלא ייגשו לבוחן מסיבה כלשהי שאינה שרות מילואים בזמן הבוחן  Exam*0.86 + Assignments*0.12 + quizes*0.02 הציון לתלמידים שלא נגשו לבוחן מכיוון שהיו בשרות מילואים  Exam*0.86 + Assignments*0.12 + quizes*0.02 + 3 לבית: וודאו את הבנת נכונות האלגוריתם של אוקלידס רשמו תרשים זרימה שלו מטלת מעבדה ראשונה: להגשה באמצע השבוע הבא מטלה ראשונה באמצע השבוע הבא להכנס לאתר לקרוא הודעות באופן קבוע מייק: בסוף חוזרים ל"מה זה מחשב??" כלי שבאמצעותו ניתן לפתור בעיות באמצעות אלגוריתמים 02:56:46

כללי המשחק אנו מקפידים מאוד על נושא האמינות. אם תהיה לנו סיבה טובה לחשוד שעבודה הועתקה העניין יועבר לועדת המשמעת האוניברסיטאית. העונשים שהועדה יכולה לתת לתלמידים מורשעים נעים ביין ציון אפס בתרגילים להרחקה תמידית מהאוניברסיטה. בהתחשב בחלק הקטן של כל תרגיל בציון הסיכון מאוד לא כדאי. למען הסר ספק. אסור להעתיק תוכניות. מותר לדבר על התרגיל, אסור להיעזר האחד בשני בכתיבה. אסור להראות האחד לשני תוכניות. זה עלול ליצור תוכניות דומות שיגרמו לנו לראות בהן תוצר של העתקה. איננו יכולים להבחין בין המעתיק לבין מי שהעתיקו ממנו. אנו נותנים לכם כלים כדי לשמור על פרטיות התוכניות שלכם ואם תוכנית עברה מתלמיד אחד לשני כנראה שהם שיתפו פעולה. אם עבודה מוגשת על ידי זוג. האחריות במקרה של העתקה היא על שני השותפים. טענת אי ידיעה מצד אחד מהם לא תתקבל. אנא אל תעשו שטויות אנחנו די טובים בתפיסת העתקות. לבית: וודאו את הבנת נכונות האלגוריתם של אוקלידס רשמו תרשים זרימה שלו מטלת מעבדה ראשונה: להגשה באמצע השבוע הבא מטלה ראשונה באמצע השבוע הבא להכנס לאתר לקרוא הודעות באופן קבוע מייק: בסוף חוזרים ל"מה זה מחשב??" כלי שבאמצעותו ניתן לפתור בעיות באמצעות אלגוריתמים 02:56:46

כללי המשחק אנא כבו טלפונים סלולאריים בתחילת השיעור. אנא היכנסו בזמן לשיעור. מאחרים מפריעים מאוד לכתה כולה. אנא שימרו על השקט בשיעור. שעור שבו לא נספיק להעביר את כל החומר בגלל הפרעות ייחשב כאילו ניתן במלואו. לבית: וודאו את הבנת נכונות האלגוריתם של אוקלידס רשמו תרשים זרימה שלו מטלת מעבדה ראשונה: להגשה באמצע השבוע הבא מטלה ראשונה באמצע השבוע הבא להכנס לאתר לקרוא הודעות באופן קבוע מייק: בסוף חוזרים ל"מה זה מחשב??" כלי שבאמצעותו ניתן לפתור בעיות באמצעות אלגוריתמים 02:56:46

כללי המשחק פרוט באתר הקורס http://www.cs.bgu.ac.il/~intro111/Main/Syllabus לבית: וודאו את הבנת נכונות האלגוריתם של אוקלידס רשמו תרשים זרימה שלו מטלת מעבדה ראשונה: להגשה באמצע השבוע הבא מטלה ראשונה באמצע השבוע הבא להכנס לאתר לקרוא הודעות באופן קבוע מייק: בסוף חוזרים ל"מה זה מחשב??" כלי שבאמצעותו ניתן לפתור בעיות באמצעות אלגוריתמים 02:56:46