[השמעת מוסיקה] [מוסיקה - רוסיני, "RANZ DES VACHES "מילהלם טל] [מוסיקה - BEAT אנגלית, "במרס מהראשים המסתובב "] [מחיאות כפות ומריעות] דוד Malan: אז זה CS50. שמי דוד מלאן. ו -73% מכם אין לי ניסיון קודם עם מדעי מחשב, בניגוד למה שנדמית לך. אז היום חשבנו שאנחנו היינו לכרסם בכי חוסר היכרות, אלא גם נותן לך תחושה של, עבור אלה מכם עם נוחות יותר, שהכיוונים אתה יכול ללכת בסמסטר הזה. אז בואו נתחיל עם זה. באמת אין לי מושג מה יש בפנים של מחשב, למרות, כמוך, אני להשתמש בו בכל יום. אבל זה סוג של תיבה, ויש לא תשומות רבות לתוכו. לכל הפחות, יש, מה? ככל הנראה כבל חשמל. ואכן עם מרכיב אחד זה, חשמל, נראים שאנחנו מסוגלים עושה לא מעט בימים אלה. אבל בסופו של היום, אנחנו צריך לייצג את הדברים כי אכפת לנו. אנחנו צריכים לייצג את המידע בצורה כלשהי. ואתה כנראה לפחות במעורפל מכיר את הרעיון על ידי בינארי או ביטים דרך זו או אחרים, מחשבים הופחת לאפסים ואחדים. אבל אנחנו יכולים לאמץ את זה ולפחות לשים קצת אור על זה? אז יש לי קצת אלה מנורות שולחן כאן. יש לי שקע חשמל כאן. ואני מתכוון להציע שבפנים המחשב שלי היא לפחות אחד מן את הדברים האלה, משהו מסוגל של להיות מופעל או כבוי. במקרה זה, זה אכן מנורת שולחן, אבל ברמה נמוכה יותר, זה משהו נקרא טרנזיסטור. אבל בעולם שלנו, זה מנורת שולחן, ולכן אני הולך קדימה, ולחבר את זה לחשמל שלי כאן. ואני טוען שמשתמש בזה פשוט, מכשיר פשוט, מתג פשוט זה, אני יכול לייצג מידע. למשל, עכשיו, אני מייצג שום דבר, נכון? אני מייצג את מה שאני אתקשר או 0 שקר, ההפך ממשהו למעשה להיות נוכח. אבל אם אני פשוט להפעיל מתג זה, עכשיו אני כבר מיוצג 1. אז באמצעות פיסה מאוד פשוטה זו של זיכרון, אם תרצה, אני יכול לייצג מידע. עכשיו למרבה הצער, המחשב שלי לא יכול לעשות כל כך הרבה. זה יכול לייצג רק שני ערכים בעולם כולו - 0 או 1. אבל מה פתרון ברור, עכשיו, אם אנחנו רוצים להרחיב את המחשב שלנו זיכרון ומייצג יותר מאשר רק 0 ו -1? ובכן, בואו לתפוס קצת אחר כך. בואו לתפוס מתג אחר, אחר טרנזיסטור, עם זאת אתה רוצה תחשוב על זה. תן לי ללכת קדימה ולחבר את זה למחשב שלי גם כן. ואני הולך לתבוע, עכשיו, כי על ידי שימוש קצת יותר חשמל ו פונה יותר של בוררים אלה וב את, אני יכול לייצג כזה יותר מידע. אז עכשיו, זה הוא 1. אם אני רוצה לייצג את החברה 2, אני יכול לעשות את זה. אבל בדרך כלל, אמנה, שכן אנו סופו של דבר תראה, תהיה לי לעשות את זה. אז זה הוא 0, זו היא 1. זה יהיה 2. וזה לא מפתיע, זה יהיה 3. אז בדרך זו, ובכל זאת, יכולה אנו סופרים את עוד יותר? אם אני מקבל קצת שלישי, מתג שלישי, מה המספר הגבוה ביותר שאני יכול עכשיו לספור עד 0 מ? אז 7 אם אני מתחיל ב 0, נכון? כי אם אני פונה את האור הזה וב בעצם לחבר את זה שלישי ואחרון אור לתוך השקע החשמלי שלי כאן, אז יש לי את היכולת לייצג כל אחד משני ערכים כאן, שני ערכים כאן, שני ערכים כאן - ולכן אני יכול לייצג פעמים 2 פעמים 2 2, או שמונה ערכים אפשריים. ואם אני מתחיל חשבונאי ב 0, ולכן זה 0, 1, 2, 3, 4, 5, 6, 7. אז בינארי זה. זה באמת פשוט כמו זה. ואני טוען שזה בעצם די מוכר ביותר כולם בחדר הזה. תן לי ללכת קדימה ולפתוח עורך טקסט קטן כאן. ואתה אולי זוכר מבית הספר היסודי שהיו לנו דברים כמו מאות מקום, מקום עשרות, ומקום אלה. וזוכר שאם היה לך קצת עשרוני מספר, כמו משהו אקראי כמו 123, שהיית למעשה לכתוב את זה בצורה משלושת העמודים הללו. ולמה הוא 1, 2, 3 מה אנחנו יודעים כמו 123? ובכן, בעמודה השמאלית ביותר, יש לנו אחד 100 ועוד שניים 10s, אז זה 120, ועוד שלושה 1s, אז זה 123. עכשיו העולם הזה שאנחנו פשוט האירו זה בדיוק אותו הדבר כמו אתה כבר מכיר מזה שנים, אלא שעכשיו, טורינו לא כוחות 10. הם פשוט חזקים של 2. אז אילו זה אלה המקום, זה הולך להיות מקום הזוגות, זה הולך להיות מקום ארבע. ובגלל שאני רק משתמש פשוטה של מנגנונים כדי לשנות את המצב לסירוגין - חשמל זורם או חשמל לא זורם - לא די שיש לי את אותה הבעה טווח כ0 עד תשע. אנחנו הולכים לשמור את זה פשוט סופר בעולם הזה של מחשבים. יש לי רק 0 או 1 - או לבטל ב, שקר או אמת. ולכן מה שאני מייצג עכשיו הוא 1, 1, 1, משום שכל אחד מאלה אורות דולקת. טוב, זה נותן לי אחד ועוד אחד 4 2, ולכן זה 6, ועוד אחד 1, וזה 7. וergo עושה רצף של שלוש ביטים מייצגים את המספר 7. אז כל הזמן הזה, חלק פנימי שלך מחשב, היה כל מספר של טרנזיסטורים, כל מספר של ביטים. אבל בסופו של היום, אנחנו יכול לייצג מידע כפשוט עד כדי כך. עכשיו לצערנו, אנחנו נספרו רק עד 7 בCS50 עד כה, אבל אני מקווה שנוכל לעשות קצת יותר טוב מזה. ואכן אנחנו יכולים. נניח שרק אנחנו כבני אדם באופן שרירותי החליט שאנחנו הולכים כדי לשייך מספרים כמו 1 ו 2, 3, 4, 5, 6, 7, עם אותיות ספציפיות של האלפבית. ומסיבות היסטורי, אני הולך להתחיל באופן שרירותי למדי, אבל אני הולכים להגיד, בני אדם, אנחנו הולכים להחליט כסטנדרט, בכל העולם, כי 65 מייצגים את א 'מכתב המספר 66 ב 'ייצגו את הנקודה, נקודה, נקודה. 90 ייצגו את המכתב ז' ובואו נניח, אם אנחנו באמת לשים קצת חשבתי לזה, אנחנו יכולים לבוא עם מספרים לסימני קריאה ואותיות קטנות, ואכן, אנשים אחרים שעשו את זה בשבילנו. אז עכשיו היו לנו עם ביטים שאנחנו יכולים מספרים מייצגים, מספרים שבי אנחנו יכולים לייצג את האותיות, ועם אותיות אנחנו יכולים עכשיו להתחיל להלחין הודעות דוא"ל ותווי דפוס על המסך. אז הרשה לי להזמין, אם הייתי יכול, שמונה מתנדבים אמיצים - שלא אכפת לי מופיע לא רק על מצלמה אבל באינטרנט - כדי לבוא לכאן ולייצג שמונה כזה ביטים, ולא שלוש. אז מה דעתך על אחד, שתיים? מה דעתך על שלוש? מה דעתך על ארבעה באור כחול, חמישה בסופו של הדבר? על מישהו כאן? שש ביממה, שבע בחזית, ושמונה בחזית, גם כן. אז אני פשוט כל כך קרה לבוא מוכן עם חבורה שלמה של פתקים. ועל פיסות נייר הללו הם מספרים שמייצג את מה שעמודות אתם הולכים לייצג. אז אתה יהיה - מה השם שלך? תלמיד: אנה לאה. דוד Malan: אנה לאה, אתה יהיה טור 128s. אתה נמצא? תלמיד: כריס. דוד Malan: כריס יהיה להיות עמודת 64s. אתה נמצא? תלמיד: דן. דוד Malan: דן להיות עמודת 32s. תלמיד: Pramit. דוד Malan: Pramit יהיה להיות עמודת 16s. תלמיד: ליליאן. דוד Malan: ליליאן יהיה 8s. תלמיד: ג'יל. דוד Malan: ג'יל תהיה להיות עמודת 4S. תלמיד: מרי. דוד Malan: מרי יהיה 2s, ו? תלמיד: דוד. דוד Malan: דוד להיות עמודת 1s. אז אם אתם יכולים לשלב קצת קדימה, כך שכל אחד יכול לראות. מה אתם לא רואים שהוא על אחורי של פתקים אלה הוא גיליון לרמות קטן שעומד להורות שמונה ביטים אלה לשני להרים את היד שלהם או לא להרים את היד שלהם. אם היד שלהם עולה, הם ייצוג 1. אם היד שלהם נשאר למטה, הם מייצג 0. בינתיים, אנחנו צריכים להיות הקהל הצליח להבין, על סמך זה מיפוי, מה מילה בת שלוש אותיות אלה אנשים עומדים לפרט. אז ברגע אחד, אתה הולך לקרוא את השורה הראשונה מהגב של הגיליון לרמות שלך, ואתה גם הולך להעלות או לא להרים את היד שלך. אם אתה 1, אתה מעלה, אם אתה 0, אתה עומד שם בצורה מוזרה, סתם ככה. ללכת. מה מספר, בראש ובראשונה, הם מייצגים את החבר 'ה האלה? 66. 66, נכון? יש לנו 1 בעמודת 64s, 1 בעמודת 2s. זה נותן לי 66, אז שמופיע להיות ב 'המייצג אז אתם שלא אייתו - בסדר, זה מספיק. ב ' אז עכשיו בואו נעבור על המכתב השני שלנו. ללכת. מי המהיר ביותר במתמטיקה כאן? אז 79. שוב, אם תוסיפו את כל עמודות שבו יש 1, נכון לעכשיו, רק כמו שעשינו בעבר עם הפשוט דוגמאות של 7, עכשיו אנחנו לקבל את המספר 79. שהוא על פי המיפוי שלנו מכתב א 'אז אנחנו כמעט שם. ב ', א' ולבסוף, ללכת. את מה שהם מייצגים את החברה? קונסנסוס פחות. זה רק מלמול מוחלט. כן, זה למעשה 87. טוב. אז אם אנחנו עכשיו המפה שיחזרו עד - בואו להתחיל לקרוא תרשים ASCII שלנו, קוד תקן אמריקאי ל מידע מחלף. זה נותן לנו את המכתב - לא "בו", אבל "קשת". וזה מושלם קיו בשבילכם לקחת קשת ואת הראש על גב. תודה רבה. [מחיאות כפות] דוד Malan: אתה יכול לשמור אותם. למרות שלמעשה, כל מי שהייתי כמו מנורת שולחן, גם? [לשרוק מהקהל] דוד Malan: מנורת שולחן? [שחוק] דוד Malan: באמת? מנורות שולחן עבור כולם? בסדר. אז החל בפשוט מאוד של עקרונות, יש לנו כעת לא רק נספרו למעלה מ 0 כל הדרך עד 7, יש לנו ההנחה היא כי רק על ידי זריקה יותר ביטים או יותר אורות או יותר טרנזיסטורים בבעיה זו, אנו יכולים לייצג מספרים גדולים יותר ויותר, ו מכאן, טווחים גדולים יותר ויותר של אלפבית, כמו אנגלית. ורק בואו לקחת על אמונה להיום באופן דומה, כי יכולים אנו מתחילים מייצג גרפיקה ווידאו וכל מספר אמצעי תקשורת אחר שבו אנו נמצאים מוכר היום. אז זה CS50, ובמעמד הזה הצד שלך הוא, שוב, הרבה מאוד חבריו לכיתה שיש להם כקטנים כפי שאתה חווה. ואני מזכיר את זה רק משום שדי לעתים קרובות, כולל כלאחרונה כאחד כיתה ט 'ומייעצת לאירועים ב בכיתת י 'של האביב האחרון מייעצת אירוע, שאנו שומעים לעתים קרובות סטודנטים מתנערים כשמגיע לשולחן CS, טוב, אני כבר חושב על לקחת את זה intro כיתה, אבל אני לא ממש איש מחשבים. או, אבל כולם ללא ספק יודע יותר ממני. ואני שם את זה בגופן הגדול ביותר אפשרי, כדי להעביר את המסר הזה, כי זה לא במקרה למעשה. ואם אתם תוהים, צריכים אני, למעשה, להיות כאן? להבין שלא רק הוא של קורס זה מבוא לכותרת מחשב מדע, זה הוא מבוא למחשב מדע י אז יש אכן הקדמה כזו שנייה. אז אתה לא, למעשה, במקום הלא נכון. ובין המטרות שיש לי להיום הם כדי להרגיע את חששות כאלה אתה אולי יש, אבל גם לצייר תמונה של מה שמחכה לי סטודנטים פחות ויותר נוחים כאחד בקורס זה. אבל קודם כל, מילה על אחד מדפי המידע יש לך היום, ביניהם מספר שאלות נפוצות. זה היה חזון שלנו מזה זמן עכשיו להציג את דירוג חדש אפשרות לקורס הזה - כלומר, SAT / UNSAT. מבחינה פילוסופית בשבילי, זה הרבה יותר מדי, הרבה יותר חשוב ש תלמידים בכיתה זו לעסוק עם חומר, ניתן לערער על ידי חומר, ודאגה הרבה, הרבה פחות על המכניקה של ציונים בפועל ומכתב ציונים בסמסטר של סוף, אבל באמת לאמץ כמובן והחומר שלו. ובאמת זה מרגיש, באופן כללי יותר, על מה מעניין אותם, כדי מרגיש מאותגר ומתוגמל אבל בלי פחד מכישלון. ואכן, גם זה חוזר נושא במבוא זה ואחרים קורסים בתחומים אחרים, שיש לך החשש הזה כשמדובר לשים את קצות האצבעות של אדם ב מים לא מוכרים. אני בעצמי, בחזרה בשנת 1995, היה בכיתה ט '. הייתי מאוד ממוקד בהיותו רכז גוב כאן. ובכל זאת הייתי תמיד גדלתי עם קצת של עניין במדע המחשב. אני תמיד היה סקרן. אבל אז, גם, היה לי הפחד הזה של אפילו דריכה ברגל בCS50, כל כך הרבה כך שאני אפילו לא לקנות שנת הלימודים הראשונה שלו. והסיבה היחידה ששמתי את רגל ב השנה דלת כיתה י 'הייתה כי אני הורשה לקחת את זה עובר / נכשל. אבל גם עובר / נכשל נדרש שאני מקבל את האומץ לעשות מינוי עם פרופ 'Kernehan באותה העת, להביא גיליון נייר הגדול הזה, ולשאול שלו לחתימה ושלו רשות לחקור מים אלה לא מוכרים. וזה לא עזר בשנים האחרונות שכאשר עושים את זה בCS50, כאשר אנו היה אמור להיות עוברים / נכשל, באופן דומה היית עשרות או מאות חבריך לכיתה צריך לבוא, חלילה, ב מול סנדרס עם טופס זה, כי בכמה מוחות מייצג חוסר יכולת, אני מעז לומר, כדי לבצע הם ברמה 'העמיתים שלך. וזה מגוחך, אבל אני עושה חושב יש מנטליות ש. ומעולם לא הייתה בתרבות זו מיום שבת / UNSAT, או עובר / נכשל יותר בדרך כלל, בקורס זה, או באמת בקמפוס הזה. אז השנה אנחנו שינינו את זה. הייתי מחצית של אקסטזה המעמד הזה או יותר הסתיים דבר לוקח CS50 SAT / UNSAT. בזמן של שנה, זה יהיה נפלא אם כמעט כולם. לאחר מכן אולי אנחנו נעבוד על ציוני מכתב בהרווארד מכללה באופן כללי יותר. אבל לעת עתה, אנחנו נעשה את זה בתוכנו כדור שלו, ואני היית מכל לב ממליץ לך לעיין שאלות נפוצות ואלה לשאול שאלות כמו שאתה רואה לנכון, כך ש אני מקווה שאתה, בניגוד אליי, לא די יש לי אותו גורם פחד כש לחקור את מה שכנראה מקום לא מוכר. אז מה הוא CS50? זה הוא מבוא מפעלים רוחניים של מחשב מדע והאמנות של תכנות. אבל מה זה באמת אומר? ובכן, עד כה, דיברנו בקצרה מאוד על ייצוג מידע. אבל נניח שאנחנו באמת רוצים לעשות משהו עם זה. אנחנו צריכים להציג את הרעיון של מה שאנחנו קוראים לאלגוריתם. אלגוריתם הוא הליך, תהליך, סט של הוראות ל עושה משהו. ואלגוריתם יכול להיות משהו פשוט סופר. למשל, דוגמה שבה חלק של אתה יכול להיות מוכר היא זו דבר כאן. אז הספר הזה כאן הוא יותר ויותר מיום, אבל פעם בעבר, זה הכיל המון שמות ומספרי טלפון. ואכן, אם אני רוצה למצוא מישהו בספר הטלפון הזה - תגיד, מישהו בשם מייק סמית - אני יכול למצוא מייק סמית בכל מספר דרכים פשוטות למדי. אני יכול להתחיל בהתחלה ו תעבור לדף 1, לא שם. עמוד 2, לא שם. עמוד 3. האם אלגוריתם זה, שהוא תהליך, נכון? אז זה נכון, נכון? אני סוג של אידיוט בשביל לעשות את זה ב כי צורה, אבל סופו של דבר אני למצוא את שם המשפחה S, ואני מקווה שמייק הוא בסעיף זה, ואני תהפוך עשה עם האלגוריתם שלי. אבל אין ספק שזה לא אינטואיטיבי. כל אדם סביר ביותר בזה חדר לא היה עושה את זה. מה היית עושה? אתה היית הולך ישר לאמצע, נכון? בערך באמצע. ואתה מבין, הו, אלה הם הגב ' אז מייק סמית, שם משפחה להיות סמית, לא, באופן ברור, אז ב מחצית שמאלית של הספר. הוא חייב להיות בכיוון S הוא בצד הימין. ובנקודה זו, אם כי רובנו לא עושים את זה במציאות, אנחנו יכולים ממש לקרוע את הבעיה הזו במחצית. [מריע ומחיאות כפות] דוד Malan: תודה לך. [מריע ומחיאות כפות] דוד Malan: אתה ממש יכול להרוס את זה בעיה במחצית, השאיר אותי עם, פשוטו כמשמעו, כחצי מבעיה גדולה. אז אם זה היה ספר טלפונים - וזה כנראה היה - כ -1,000 דפים, עכשיו זה רק 500. אם אני עושה את זה שוב ואני מבין, אה, לעזאזל, הלכתי רחוק מדי, אני בTs קטע, שאני יכול באופן דומה - השאלה או מילולי - לקרוע את ספר טלפונים - זה היה למעשה הרבה יותר קל, כי בזמן. אני ממש יכול לקרוע את ספר טלפונים במחצית, השאיר אותי עכשיו עם לא 1000, לא 500 - 250 עמודים. ואני יכול ללכת 125, ומחצית מזה, ו חצי מזה, ומחצית מזה, עד שלבסוף אני אשאר עם רק דף אחד. [שחוק] דוד Malan: זה חלק שאני לא מצליח ב. דף בודד אחד שעליו מייק הוא תקווה. עכשיו האלגוריתמים שונים האלה יכולים להיות סוג של הערכה או הערכה ב דרכים שונות. הראשון היה מאוד ליניארי, נכון? להפוך דף, לחפש מייק. להפוך דף, לחפש מייק. זה מאוד ליניארי. אם יש דף אחד יותר בטלפון ספר, זה כנראה הולך לקחת אותי שנייה אחת יותר, יותר יחידה אחת של זמן, עם זאת אנו חישוב זמן. אז אני יכול לצייר ככה הקו הזה כאן, לפיה כגודלו של עליות בעיה משמאל לימין - ספר טלפונים נעשה קטן יותר לגדולים יותר - והזמן הולך להגדיל ב הציר האנכי, גדול יותר ספר הטלפונים הוא. אז n הוא רק משתנה כללי כי מדעני מחשב להשתמש כדי לייצג ערך כלשהו, ​​חלק המספר. אז n הולך להגדיל באופן ליניארי. להכפיל את גודלו של ספר טלפונים, זה הולך לקחת לי כפליים הזמן, ככל הנראה, למצוא מייק. עכשיו אני יכול להיות חכם על זה, נכון? אני השתעממתי במהירות. היה יכול לעשות את זה על ידי זוגות. אז שני דפים, ולאחר מכן ארבעה, לאחר מכן שש, אז בת שמונה. ואני יכול להתחיל לטוס דרכו קצת יותר מהר, אם כי בסיכון של קטין מעל הגבול העליון של מייק, אבל עקומה שאינה הולך להיות כל כך שונה. זה עדיין הולך להיות סטרייט קו, אבל מעט מהר יותר. אבל מה עשיתי? ממש עשיתי משהו ביסודו טוב יותר. אני השגתי את מה שאנחנו קוראים ללוגריתמים זמן, יומן של n, לפיה ירוק הזה יש קו הרבה, הרבה, הרבה יותר קצה פחות ישר אליו. ובמקום זאת, הוא מציע, כמו זה סוג של מתקרב אל אינסוף אי פעם כל כך בהדרגה, כי אני באמת יכול לקחת 1,000 עמודים ספר טלפונים, להכפיל את גודלו בשנה הבאה - כי מניחה שהרבה יותר אנשים לעבור לעיר. אז עכשיו יש לי 2,000 עמודים, אבל איך עוד צעדים רבים הוא שחכם יותר האלגוריתם הולך לקחת? רק אחד. אני מתכוון, שזה דבר חזק. אם נלך ל4,000 עמודים בשנה הבאה, זה הולך לקחת אותי רק שני צעדים נוספים. אז אתה יכול לזרוק יותר ויותר גדול בעיות בי, שלא כמו באינטרנט היא זריקה גדולה יותר ויותר בעיות בכל יום בגוגל וFacebooks של בעולם, וזה לא כזה עניין גדול. כי אני לשים יותר מחשבה ודאגה ל האלגוריתם שלי עם אשר כדי לפתור בעיות ביעילות. ואכן, שיהיה אחד מטרותיו של קורס זה. תוכל, לאורך הדרך, ללמוד איך לתכנת. תוכל ללמוד כיצד לתכנת ב כל מספר של שפות. אבל בסופו של היום, הוא כמובן על פתרון בעיות וקבלה טוב יותר בפתרון בעיות - וכמו ב מקרים כאלה, פתרון בעיות בצורה יעילה יותר. עכשיו עד כה, אנחנו כבר עשינו את זה למדי באופן אינטואיטיבי. בואו להכיר משהו למדי הגנרית נקרא pseudocode. אז אנחנו סופו של דבר נקבל, בקורס זה, כדי שפות תכנות שונות. אבל היום אנחנו נעשה את זה באנגלית כמו תחביר, שבו אתה פשוט סוג של אומר מה שאתה אומר, אבל אתה אף פעם כל כך תמציתי ואתה אל תדאגו דקדוק ומשפטים שלמים. אתה פשוט להביע את עצמך כ תמציתי ככל האפשר. אז pseudocode הוא כמו אנגלי תחביר שמייצג שפת תכנות. ולקראת הסוף ש, הרשה לי להציע כי עכשיו אנחנו מודל התהליך שאנחנו פשוט ספירה תאר משהו קצת אחרת, הפעם לוקחים מסתכל על וידאו של חמש דקות זה הופק על ידי החברים שלנו ב-TED כי מגדיר מה הוא pseudocode, מגדיר מה חשיבה אלגוריתמית היא, ואפילו למרות שהדוגמא שאתה עומד לראות הוא, בעצמו, סופר פשוט, זה הולך להתחיל לתת לנו את הנפש מודל, את אוצר המילים, שבה לעשות הרבה, הרבה יותר מורכב אלגוריתמים די מהר. [BEGIN השמעת וידאו] [השמעת מוסיקה] קריין: מה אלגוריתם? במדעי מחשב, אלגוריתם הוא סט של הוראות לפתרון כלשהו צעד אחר צעד בעיה. בדרך כלל, אלגוריתמים מבוצעים על ידי מחשבים, אבל יש לנו בני האדם אלגוריתמים, כמו גם. למשל, איך היית הולך לגבי ספירת המספר אנשים בחדר? ובכן, אם אתה אוהב אותי, אתה בטח נקודה שכל אדם, אחד בכל זמן, ולספור עד מ 0. 1, 2, 3, 4, וכן הלאה. ובכן, זה אלגוריתם. למעשה, בואו ננסה להביע את זה קצת יותר באופן רשמי בpseudocode - תחביר דמוי אנגלי שדומה שפת תכנות. בואו N 0 שווים. לכל אדם בחדר, קבע N שווה ל N בתוספת 1. כיצד לפרש pseudocode זה? ובכן, שורה אחת מצהיר, כביכול, משתנים בשם N ומאתחל הערך שלו ל -0. זה רק אומר שבתחילתו של האלגוריתם שלנו, הדבר שבה אנחנו בונים יש לו ערך של 0. אחרי הכל, לפני שאנחנו מתחילים לספור, אנחנו לא נספרו שום דבר עדיין. קורא N משתנה זה רק אמנה. אני יכולתי לקרוא לזה ביותר שום דבר. עכשיו שני מסמן קו ההתחלה של לולאה, רצף של צעדים ש לחזור כמה וכמה פעמים. כך בדוגמא שלנו, אנחנו לוקחים הצעד בונה אנשים בחדר. מתחת לקו השני הוא קו שלוש, שמתאר בדיוק איך אנחנו נלך על ספירה. הכניסה מרמזת על כך שזה שלושה קווים שיחזרו. אז מה הוא אומר הוא pseudocode לאחר שמתחיל ב 0, עבור כל אדם בחדר, אנו להגדיל את N על ידי 1. כרגע הוא אלגוריתם זה נכון? ובכן, בואו לדפוק על זה קצת. האם זה עובד אם יש שני אנשים בחדר? בואו נראה. בשורה אחת, אנו לאתחל N ל -0. לכל אחד משני האנשים האלה, לאחר מכן, אנו להגדיל N על ידי 1. אז בטיול הראשון דרך לולאה, אנו מעדכנים את N בין 0 ל -1. בטיול השני באותו לולאה, אנו מעדכנים את N מ -1 ל -2. וכך עד סוף האלגוריתם זה, n הוא 2, שאכן תואם למספר אנשים בחדר. עד כה, כל כך טוב. מה דעתך על מקרה פינה, אם כי? נניח שיש 0 אנשים בחדר - חוץ ממני, מי עושה ספירה. בשורה אחת, אנו לאתחל N ל -0. הפעם, לעומת זאת, קו שלושה לא עושה לבצע בכל שכן אין אדם בחדר. וכך נשאר 0 N, התואם את מספר האנשים בחדר. די פשוט, נכון? אבל אנשי ספירה אחת בכל פעם הוא יעיל למדי, יותר מדי, לא? אין ספק שאנחנו יכולים לעשות טובים יותר. למה לא לסמוך שני אנשים בו זמנית? במקום לספור 1, 2, 3, 4, 5, 6, 7, 8, וכן הלאה, למה לא נחשב, 2, 4, 6, 8, וכן הלאה? זה אפילו נשמע יותר מהר, וזה בוודאי הוא. בואו להביע אופטימיזציה זו בpseudocode. בואו N 0 שווים. עבור כל זוג של אנשים בחדר, להגדיר N שווה ל N ועוד 2. שינוי די פשוט, נכון? במקום לספור אנשים אחד בכל פעם, שבמקום לספור אותם שניים בכל פעם. אלגוריתם זה הוא ובכך פעמיים מהר ככל שעבר. אבל האם זה נכון? בואו נראה. האם זה עובד אם יש שני אנשים בחדר? בשורה אחת, אנו לאתחל N ל -0. שלזוג אחד של אנשים, לאחר מכן, אנו להגדיל N על ידי שתיים. וכך עד סוף האלגוריתם זה, N הוא 2, שאכן תואם למספר אנשים בחדר. נניח שיש הבא 0 אנשים בחדר. בשורה אחת, אנו לאתחל N ל -0. כמו בעבר, קו שלושה אינו מבצע בכלל, מאז שאין זוגות של אנשים בחדר. וכך נשאר 0 N, שאכן תואם את מספר אנשים בחדר. אבל מה אם יש שלושה אנשים בחדר? איך עושה את זה נסיעה באלגוריתם? בואו נראה. בשורה אחת, אנו לאתחל N ל -0. לזוג האנשים האלה, לאחר מכן, אנו להגדיל N ב -2. אבל אז מה? אין זוג אחר של אנשים מלא בחדר, ולכן קו שניים לא כבר חל. וכך עד סוף האלגוריתם זה, N עדיין 2, וזה לא נכון. ואכן, הוא אמר את זה כדי להיות אלגוריתם עגלה, כי יש לו טעות. מאפשר לתקן עם קצת pseudocode חדש. בואו שווה 0 n לכל זוג של אנשים בחדר. הגדר N שווה ל N ועוד 2. אם אדם אחד נותר מזווג, להגדיר N שווה ל N בתוספת 1. כדי לפתור את הבעיה מסוימת הזאת, יש לנו הציג, בקו ארבעה, מצב, הידוע גם בסניף שמבצע רק אם יש אחד אדם שאנחנו לא יכולים זוג עם אחר. וכך עכשיו, אם יש אחד או שלושה או כל מספר אי זוגי של אנשים ב החדר, אלגוריתם זה עכשיו יספור אותם. האם אנחנו יכולים לעשות אפילו טובים יותר? ובכן, אנחנו יכולים לספור ב-3 או 4s או אפילו 5S ו10s, אבל מעבר לזה, זה הולך לקבל קצת קשה נקודה. בסופו של היום, בין אם בוצע על ידי מחשבים או בני אדם, אלגוריתמים הם רק סט של הוראות עם שכדי לפתור בעיות. אלה היו רק שלוש. מה בעיה תהיה לך לפתור עם אלגוריתם? [השמעת וידאו הסוף] מלאן דוד: זה הוא הזמן רק אני תופיע בצורת קריקטורה. אבל איפה זה משאיר את הסיפור, עכשיו, הוא איך אנחנו יכולים לעשות טובים יותר? שלוש או ארבעה, אנחנו טוענים, שאנחנו יכולים לסמוך אנשים הרבה יותר מהר, אבל אנחנו יכולים לעשות יסוד טוב יותר מזה? ואני מהמר שאנחנו יכולים. אם אנחנו מציגים קצת משלנו pseudocode כאן, אני הולך להציע שאנחנו יכולים להשיג קו כזה. אנחנו לא הולכים לספור אנשים אחת, שתיים, שלוש, ארבעה. אנחנו לא הולכים ללכת שתיים, ארבע, שש, שמונה. אנחנו הולכים לעשות את היסוד טוב יותר על ידי חשיבה מחדש את הבעיה, ובכך מקרה, מינוף אחרת לא מנוצל משאבים. ברגע אחד, אני מקווה שאסלח לי ולרצות אותנו על ידי עמידה ב מקום, בשלב שבו אנו הולכים תשאל כל אחד מכם לקחת על בך דעת המספר 1. לאחר מכן אתה הולך יותר ויותר בצורה מוזרה, ככל שחולף זמן, למצוא מישהו אחר שעומד, לשלב המספרים שלך יחד על ידי הוספה אותם. אחד מכם ואז הולך להתחרות לשבת המורד ראשון, ואדם האחר הוא הולך לחזור. אז במילים אחרות, על ידי זריעה כל לך עם מספר 1, ולאחר מכן שילובם לתוך 1s 2s 2s ואלה ל4S, עם כולם יותר ויותר יושבים למטה, אנחנו צריכים, בסופו של אלגוריתם זה, יש רק אחד הלוואה נשמה שלא מתיישב מספיק מהר אבל שיש לו את ספירת קהל כולו במוח שלו או שלה. אז אם היית, בואו נלך קדימה ו-- שלב אחד - לעמוד במקום. ולבצע. [קהל המנהם] מלאן דוד: האם אתה יודע שבו לורן הוא? 729? [קהל המנהם] דוד Malan: בסדר? [קהל המנהם] דוד Malan: בסדר, אנחנו צריכים היה מתקרב לסוף. אנחנו רואים בחור אחד עומד כאן עדיין. מי צריך אותם כדי להיות יחד? אם אתם רוצים לשייך את. מישהו למעלה. למה אני לא אתן יד לכאן. למעט מאוד אנשים שעדיין בעמידה, מה שמספרים עושים לך יש בראש שלך? תלמיד: 78. דוד Malan: 78 בתוספת - שעומד כאן למטה? תלמיד: 39. דוד Malan: פלוס 39. בתוספת מי עוד עדיין עומד? 81? אוקיי, מי עוד? 81 נוספות? וואו. ואז מה שיש בגב? תלמיד: 49. דוד Malan: 49, בתוספת? תלמיד: 98. דוד Malan: 98 פלוס? האם זה מישהו אחר? 12? עבודה טובה. [שחוק] דוד Malan: הו, 112 - הו. עבודה טובה! [שחוק] [מחיאות כפות] דוד Malan: עוד מישהו עדיין עומד? סליחה? תלמיד: 99. דוד Malan: 99. אף אחד אחר עדיין עומד? והמספר הכולל של תלמידים כאן הוא למעשה, על פי - יש לך מספר? אה, המספר האמיתי של אנשים ב חדר, על פי החשבון ש עמיתי ההוראה היו עושים בדרכו של כל אחד ב, היה 729. אז יצא מחדר מלא תלמידי הרווארד שספר את עצמם, תשובה היא 637. [שחוק] דוד Malan: כל כך קרוב. אבל עדיין. אוקיי, אז זה הוראה רגע, נכון? עכשיו זה מה שאנו מתארים כבאג. איפשהו בדרך, עשינו כמה חשבון לא נכון, או מישהו שהתיישב, או שמאלה, או שמשהו השתבש. אבל זה בסדר. משום שאפילו עדיין, אנחנו הגיע די קרוב. ואני טוען שהגענו להלא נכון תשובה הרבה יותר מהר ממה שהייתי לי שימוש בגישה ליניארית יותר שלי. אז בואו נניח שאנחנו אכן מקבלים את זה לתקן, אבל חושב עכשיו על מה קורה בכל פעם, לעומתי אלגוריתם מצביע נאיבי שלו. אחת, שתיים, שלוש. אם אכן יש 729 או 637 אנשים כאן, זה היה לוקח לי פשוטו כמשמעו, 637 או 729 pointings של האצבע ו להגדיל כל הסכום הכולל שלי. ואני יכול לעשות קצת יותר טוב על ידי הולך שתיים, ארבע, שש, שמונה, ו להכפיל את המהירות הזו, אולי אפילו פי שלוש או לארבעה, תלוי איך גם אני יכול לעשות את זה סופר לי בראש. אבל הגישה הזאת שאתם לקחו היה שונה במהותו. כי בהתחלה, כולכם קם. אז כל 729. ולאחר מכן, פשוטו כמשמעו, מחצית שלך התיישב. ואחרי זה, עוד מחצית מכם התיישבה. ואחרי זה, עוד מחצית מכם התיישבה. והמספר הכולל של פעמים שאתה החבר 'ה הייתה יכול התיישבה היא בערך שמונה או תשע או עשר פעמים כלל, תלוי מה היא הספירה הכוללת שלנו. ואנחנו יכולים למיין של לעשות דרך אחרת זה. אם היו לנו 1,024 אנשים בחדר, מספר כולל של פעמים שאתה יכול לחצות 1,024 אנשים הוא 10. עכשיו תחשוב על זה ב הכיוון השני. נניח, עד כדי גיחוך, שהיו לנו, אומרים ארבעה מליארד אנשים בחדר הזה, או חדר מעט גדול יותר. כמה פעמים היינו נעלם באמצעות אלגוריתם זה, באופן שהמחצית מהכיתה שיושבת למטה? זה רק הולך לקחת 32 כגון פעולות, גם בכיתה של גודל ארבעה מיליארדים. למה? בגלל ארבעה מליארד הולך לשניים מיליארדים, הולך למיליון, הולך 500 מיליון, הולך ל250 מיליון, נקודה, נקודה, נקודה. אני יכול רק לעשות את החלוקה שחלק 32 פעמים, בשלב מסוים, כולם שמלבד אדם אחד יישאר עומד. וגם את זה, הוא סוג של עוצמה רעיון שיותר ויותר ננסה מינוף בקורס זה, ובשינה תכנות ומדעי מחשב יותר בדרך כלל, חיידקים של רעיון עם אלה אז שבו אנו יכולים לפתור בעיות רבות, הרבה יותר עוצמה. אז התחלנו די פשוט עם זה pseudocode ובחור בחדר, אבל עכשיו עם חדר שלם מלא באנשים אנחנו עשינו ביסוד טוב יותר. ובכן, בואו עכשיו מעבר pseudocode לקצת קוד בפועל. שפה זו שאתה עומד לראות יקרה להיקרא JavaScript, ו אנחנו נחזור לזה לכיוון הסוף של הסמסטר. זה שפת תכנות שאתה להשתמש בו כדי להפוך את אתרי אינטרנט ואחרים, כגון תוכנה בימים אלה. ואנחנו השתמשנו בו, הודות לחבר שלנו בסטנפורד, כדי לקודד קצת מידע חבוי כאן. זוהי האמנות של steganography, כביכול, שבו אתה יכול להסתיר מידע במה שנראה אחרת יהיה רעש או שונה לחלוטין תמונה לגמרי. אבל מוטבע בתמונה מסוימת זו אכן מסר סודי של מיני. אז תן לי ללכת קדימה ולמשוך את אותה תמונה כאן, זה זמן בדפדפן אינטרנט. ואני הולך להניף את היד שלי על כמה מן את הפרטים להיום, ובמיוחד לאלו מכם שזה נראה כמו אבל לא רק JavaScript יווני, כמו לחלוטין בשפה לא מוכרת. אבל זו דוגמה של שפת תכנות. ועכשיו, לקחת על אמונה כי קו ראשון זה של קוד - ועל ידי קוד, אני רק אומר טקסט. טקסט שאני יכול, פשוטו כמשמעו, שהקלדת אל Microsoft Word, אם היה לי תוכנה נכונה לאז לעשות משהו עם זה. קוד מקור של תכנות, תכנות קוד, הוא באמת רק טקסט, וזה נראה שונה על סמך מה ששפה אתה משתמש, לא בניגוד לאנגלית ו ספרדית ורוסית כולם נראות שונה כאשר אתה מקליד אותם במקלדת. אז השורה הראשונה זה, לעת עתה לקחת על אמונה, פשוט פותחת גרפיקה מ אינטרנט, שגרפי רועש אנחנו רק ראינו. קו זה הבא כאן הוא דוגמה של לולאה, ואנחנו ממש ראינו אותו ז'רגון בסרטון TED. לולאה היא משהו שיקרה שוב ושוב, ולמרות שזה בהחלט נראה ברור מאליהם, עם מילת מפתח, וכמה סוגריים, ו כמה פסיק. אנחנו נחזור לזה לפני זמן רב, אבל לולאה שיש במהותה היא אומר לי התכנית, לחזר על כל של נקודות אלה רועשים, משמאל ל ימין, מלמעלה למטה. כי בסופו של היום, תמונה אוהב את זה - ואתה יכול למעשה סוג של רואה את זה על מקרן זה - היא באמת רק רשת של נקודות. כדי שנוכל לזהות כל אחד מנקודות אלה על ידי קואורדינטות, x, y, ועם זה תכנית, יכול כעת אנו מתחילים לעשות משהו לנקודות אלה. אז מה אני הולך קדימה, וכאן אין הוא שאני הולך לעשות כמה שינויים. ראשית אני הולך קדימה ולהיפטר מכל זה וכחלחל ירקרק רעש, ואני הולך קדימה והקלד את השורה הבאה אמנם תחביר סתום. im לתמונה. להגדיר כחול במיקום X, פסיק, מיקום Y, ל -0. במילים אחרות, אני רוצה רק לכבות את כל הכחול נקודות בתמונה הזאת. אני הולך קדימה, ועכשיו לחץ על להפעיל את זה / כפתור שמור, ואתה תבחין בצד ימין, התמונה המתקבלת מופיעה. עכשיו ירוק העל שלה, אבל זה לא מפתיע, כי אני ממש פניתי משם, על ידי עשיית 1 0, כל הכחול בתמונה. ובכן, עכשיו בואו נעשה את זה קצת יותר. im לתמונה, נקודת setGreen, x, y. וזה רק אומר לחזר משמאל לימין ולאחר מכן מלמעלה למטה. תכבה את זה עם ערך של 0, כמו גם. שמור. ועל המקרן, אתה לא יכול באמת באמת רואה שום דבר בכלל. על מסך המחשב הנייד שלי, אם אני מציץ בסתם בדרך הנכונה, אני יכול לראות קצת תמונה, כי הם עדיין כמה אדום שם. אם אי פעם שמעו את ראשי התיבות RGB - אדום, ירוק, כחול - זה מתייחס להרכב הזה של תמונה באמצעות רק שלושה צבעים אלה. ועכשיו, יש לנו לזרוק כל ירוק, כל כחול, אבל אין הרבה אדום. אז בואו לארכב אותי אדום. איך אני יכול לעשות את זה? ובכן, ראשית, אני הולך לשאול תכנית זו שאלה. אני הולך קדימה, בואו נקראים לזה משתנה, בדיוק כמו באלגברה. אתה יכול לקבל X או Y או Z. אני הולך להכריז על משתנה ואומרים, לשים במשתנה זה, באופן זמני, את ערכו של תמונות getRed ערך בx, y. ושוב, אנחנו נחזור לכל של פרט זה בעתיד. אבל לעת עתה, רק לקחת על אמונה כי הקו הזה הוא מבקש תכנית, מה הוא הערך האדום בx, y? בנקודה מסוימת? ואז אני הולך לעשות משהו לזה. ואז אני הולך לעשות תמונת נקודת סט אדום בx, y, y אבל הפעם אני הולך להגביר אותו על ידי עושה פעמים אדומות, נניח, 10. אז להגדיל אותו בפקטור של 10. תן לי להקטין את התצוגה ועכשיו לחץ יכול לרוץ / שמור. וזהו, שהיו שם כל זמן, למרות שהעיניים האנושיות שלנו לא הצלחתי לראות אותו. אז שוב, זה עכשיו הוא קוד אמיתי, דוגמה לשפה שאנחנו נבוא חזרה לזמן קצר. אבל תבין, במיוחד אלה מכם ללא ניסיון כזה, זה די רגע שאנחנו בעצמנו יהיו כתיבת קוד כמו שיש. למעשה, כלי שבו אתה כל מוכר קצת, אולי, הוא CS50 של כלי כמובן קניות שלו, שהיה למעשה אתחול מחדש בקיץ הזה על ידי כמה של התלמידים לשעבר של CS50 שלו, כעת פונה TFS. אז זה קורה להיות אתר אינטרנט שנבנה בשפה בשם PHP. היא משתמשת במסד נתונים בשם MySQL, דברים עם שנקבל את ידינו מלוכלך מאוחר יותר בסמסטר. אבל תאמינו או לא, אפילו משהו ככה סופו של דבר מפחית את הפשוט ביותר של לולאות ותנאים ו ענפים, כמו אלה שראינו פשוט רגע לפני בסרטון TED. עכשיו מה שחשבתי שאני רוצה לעשות הוא נתח לא רק משהו שאנחנו צוות עשינו לקמפוס, אלא משהו תלמיד לשעבר - שלוש סטודנטים, למעשה - עשה את זה בשנה האחרונה, סיירה, דניאל, ו סם, שעבר מהם לא היה לו לפני ניסיון תיכנות כשהוא לקח את CS50. ולפרויקט הגמר שלהם, הם הציג, ביריד CS50, יישום בשם wrdly, שהוא תכנית מבוססת אינטרנט שבה הם עשו הסרטון הזה שחשבתי שאני רוצה לחלוק ל נותן לך תחושה של מהו בדיוק אפשרי עד סוף הטווח. [השמעת מוסיקה] דוד Malan: זה מהשבוע זירו עד שבוע 12 בשנה האחרונה. [מחיאות כפות] דוד Malan: כטיזר, יותר מדי, באמת כדי לעורר את התיאבון שלך הוא מה אפשרי, ייתכן שכבר ראה, או ייתכן שבקרוב יראה, market.cs50.net, כלי חדש שיש לו צוות של הקורס כבר עובדים עליו, הפעם ב שיתוף פעולה עם הסטודנטים הרווארד סוכנויות, כך שהחל מהשנה וממשיך בתקווה לזה קיץ הקרוב יהיה לך תקן הזדמנות בקמפוס ולקנות למכור דברים שמעניינים אותך. ועם שותפות דרך HSA, אתה גם להיות מסוגל להוריד את הפריטים באחת מהחנויות הפיזיות של HSA בכמה נקודה בעתיד, כדי דברים פרוקסי, במיוחד כאשר אתה נסיים את הלימודים ולא בהכרח רוצה זורקים דברים, אבל למעשה לשלם אותו להעביר לאנשים שאולי עוקבים אחריך כאן בקמפוס. אז עוד על כך לבוא. אבל קצת יותר קונקרטי, כלי מה שיצא מCS50 בשנים האחרונות שנים, שבה חלק מכם עשויה להיות מוכר ואחרים שלך עשוי להיות googling עכשיו, בCS50.net/2x, אתה תמצא קישור להארכת כרום אשר הפגנתית של איך אתה יכול להשתמש ב-JavaScript, שאותה שפתנו בשימוש עם מגדל אייפל לפני רגע, כדי ליישם את מהירות השמעת 2x לכל סרטוני iSites הרווארד. זה משהו שנבנה לתוך נגן וידאו של CS50 עצמו. אבל גם את זה, אם אתה מתחיל לחפור לקוד המקור, שבו אנו יהיו שמחה להעמיד לרשותך, תראה איך אתה אפילו יכול לפתור בעיות כאלה, האצת יישומונים באתרים עם שאתה כבר מכיר היטב. אז עכשיו מילה על הקורס ו ציפיות ומה שלפנינו. באופן כללי, אנו אכן נאסוף כאן בימי שני ורביעי - אם כי ביום שישי הקרוב, נצטרך לאסוף בגלל קניות של שבוע - 1:00-14:00, אם כי לפעמים עד 2:30. בהתחשב בעובדה שאתה ולכן ייתכן שתרצה או צריך לקחת חלק בכיתה בשעה 2:00 הלאה, או אפילו לפני כן, מבינים קורס הוא תומכת של מה שנקרא הרשמה בו זמנית, לפיה אנו יהיו תומך בעתירה שהוגש למועצה והמודעות תושבך דיקנים בשמך אם יש לך אי שם בסכסוך הזה 1:00-2:30 טווח. ראש לכך שכתובת אתר האינטרנט בשביל פרטים נוספים. אבל במונחים של מבנה התמיכה המאפיין CS50, לסטודנטים יותר ופחות נוח כאחד, אנחנו מציע מסלולים שונים של חלקים. וזה כמה שבועות עד לפתיחה, אבל לפני זמן רב, תתבקש כאל רמת הנוחות שלך. האם אתה בין אלה פחות נוחים, יותר נוח, או איפשהו באמצע? ויהיו לנו שלוש ברורים מסלולים כי כדי לספק את בדיוק מאותם קהלים. אז בשום שלב בטווח צריך אותך אפילו מרגיש כאילו אתה מתחרה נגד כל סטודנט עם יותר פחות או רקע ממה שאתה. ואכן, כמובן אמור להיות הרבה יותר שיתופי והרבה פתוח יותר מזה. במונחים של הקבוצות בעייתי, אתה תמצא גם שבנוסף ל מהדורה סטנדרטית של הבעיה של כל שבוע נקבע, כי יש לעתים קרובות "האקר מהדורה "שאמורה להיות ממוקדים ב5% עד 10% בערך של דמוגרפי שאכן בין אלה יותר נוח והייתי רוצה יותר אתגר מאשר התקן המהדורה של pset שמצפה. פרטים נוספים על אלה שיש מצא בתכנית הלימודים. אבל גם בניתן למצוא שם פרטים על הקורסים בימים מאוחרים. בדרך כלל בעיה מגדירה הם עקב בימי חמישי. עם זאת, ניתן להאריך רבים משלך מועדים בסתיו קרוב בימי חמישי עד ימי שישי פשוט על ידי אסיפתנו באמצע הדרך, אם אפשר לומר כך, לענות על כמה-להתחמם שאלות בחלק מהבעיה של השבוע ערכות, כי באופן אוטומטי לאחר מכן לתת לך 24 שעות נוספות. אנחנו גם יהיו ירידה הנמוכה ביותר שלך ציון, לפי תכנית הלימודים. כדי לתת לך תחושה של מה הבעיה ערכות הן - כי זה אכן הבעיה של הקורס קובעת כי סופו של דבר להגדיר כמעט כל החוויה של התלמיד, יותר מאשר הרצאות, יותר מסעיפים, יותר מרוב כל האחרים היבט של הקורס. בשנה שעברה, למשל, התחלנו, כמו נתחיל בשנה זו, עם שריטה. במיוחד ביום שישי הקרוב, נשתמש, ל הזמן של יום אחד פשוט, גרפי שפת תכנות, שבה אנו יהיו להתחיל בתכנות על ידי גרירה ו יורד חתיכות הפאזל שרק להרכיב פיזי אם זה הגיוני כדי לעשות זאת באופן הגיוני. בשבוע בא, אנחנו במהירות מעבר ל C, די ישן, אבל קטן מאוד ו שפה פשוטה שתאפשר לנו באמת ללכת מ -0 עד 60 במהלך של שבועות ספורים בלבד, ולאחר מכן לצבור הון את אותם כישורים וידע של בונה תכנות בסיסית לתוך שפות ברמה גבוהה יותר כמו PHP, JavaScript, ואחרים עדיין. בשנה שעברה, pset השלישי בקורס היה זה של הצפנה, יישום תחום ספציפי שבו אנו תלמידים מאותגרים ליישם כל מספר הצפנים, תוכניות שבי לטרוף או לפענח מידע, כדי להצפין אותו. למהדורת ההאקר, לעומת זאת, נתנו לתלמידי האקר קובץ ממחשב סטנדרטי המכיל יוניקס שמות משתמש וסיסמאות, האחרון שבם היו מוצפנים, והיינו קוראים תגר על האקר אלה תלמידים לפענח, כמיטב יכולתם, סיסמאות האלה, עדיין על ש אותו תחום. מירוץ, משחק שבה חלק מכם מכירים אולי. חתיכת זיהוי פלילי, שבו אנו מבקשים מתלמידים לשחזר נתונים שהיו אחרת יימחק מדיגיטלי שלי כרטיס קומפקט פלאש של המצלמה, על ידי בעצם כתיבת תוכנה כדי להבין, איפה היו האפסים והאחדים ב מצלמה דיגיטלית שהעבר הלחין גרפי JPEG? אתגר של מיני בשנה שעברה מעורב בכתיבה המהירה ביותר בודק איות אפשרית, מתחרה נגד חברים וחברים לכיתה אם הם היינו רוצים. יישום פאף n 'הף, תכנית דחיסה. ולאחר מכן לסיים את הסמסטר עם CS50 האוצר, יישום מבוסס אינטרנט עם שאתה יוצר אתר דמוי ETrade כדי לקנות ולמכור מניות, ולכן כדי לדבר, על ידי משיכת למעשה כמעט יאהו ציטוטים בזמן אמת האוצר. מה שלא עשה בשנה שעברה הייתה סט בעיה אחת שנותר עם זאת אהוב. אם מעולם לא הלכו shuttle.cs50.net, תראה משתמש ממשק קצת כמו זה. אבל לפני שנתיים, בכיתה פועל, באמצעות Google Maps ו Google Earth Plug-in וקצת של מתמצא בנהיגה ברחבי קמפוס, כך שהמטרה של המשחק הזה הייתה, כפי שאתה יכול לראות כמה מהפרצופים, הוא לנהוג ברחבי קמפוס מחפש צוות, עמיתי הוראה וCAS, ו כאשר אין לך, לשים אותם על אוטובוס ההסעות שלך. אף אחד מהם נראה ממש להיות כאן, כך אנחנו הולכים להיכנס לרמות קוד. [שחוק] מלאן דוד: יש לנו ללכת. בסדר. והנה עכשיו הוא את צוות שילב ברחבי קמפוס. וכמו שאתה יכול לראות, ביד ימין צד שמאל של המסך, אוטובוס ההסעות יש מושבים ריקים. והמטרה הייתה לכתוב קוד שבו כדי לדמות את זה נהיגה ולהרים ולהפיל הנחה של נוסעים. שאף אחד, גם באמצעות שפה קרא-JavaScript. אז מבין כי תוכניות כמו שיהיה להיות באותו המסלול שלנו זה שנה, גם כן. במונחים, עכשיו, של תמיכה נוספת, יש לנו שעתי עבודה. כפי שאתם יכולים לראות בבית שלך חדר אוכל או באננברג, נהיה בבית האוכל אולמות ארבעה לילות בשבוע - וורט, Pfoho, אליוט ואננברג בשנה זו, 20:00-23:00. ומה שחשבנו שאנחנו היינו עושים את זה שנה הוא משהו קצת שונה. אם שמע שמועה כי בשנה שעברה זה היה קצת מלחיץ מדי, זה שעתי עבודה של השנה, כפי שאנחנו מתארים בשבוע הבא, יהיה יותר אורגני, לפיה עם הגעה, אתה תהיה נשלח לשולחן אחד מסוים שבו מספר רב של אנשי צוות מחכים, ואנחנו נעשה את הדברים הרבה יותר באופן אורגני. לא עוד תור, לא יותר האייפד, אבל ולא שיש לי אינטימי יותר שיחות סביב שולחן ולא רק שמונה תלמידים או כך, על מנת ש מקורבת התחושה של מה אחרת יהיה ברמה הרבה יותר קטנה. אנו מציעים, כמו גם, את הדברים האלה אנחנו נקראים ערוצים, קטעי וידאו שצולמו ב קידום על ידי אחד מההוראה של הקורס בחורים, Zamyla, שבו היא מנחה אותך דרך הבעיה של השבוע ערכות, המציעות טיפים וטריקים עבור אתגרים שלפניו. ולהפך, אחרי סטים בעייתיים בשל, השנה, אנחנו גם לשחרר קליפים קטנים קוראים דיוני סיכום ש בעצם לך ללכת דרך פתרונות יציגים, ושניהם טובים רע, שדרכו אתה יכול להסיק כמה אתה יכול להיות או צריך להיות יישם הפתרון שלך. ומה אגיד שאנחנו מציעים בפעם הראשונה גם השנה, במיוחד עבור אותם סטודנטים שהועילו עצמם הקורס של השני משאבים, אבל בכל זאת נאבקות יותר מדי, כמובן עצמו יהיה זוג התלמידים האלה, כמו משאבים מאפשרים זאת, עם מורים, כך ש יש לך הרבה יותר אינטימי הזדמנות מחדרי אוכל בבית לאפשר לסיוע של אחד על אחד. עכשיו הצצה סופית בחלק ממשחקי הסוף באופק. ייתכן שאתה מכיר Hackathon CS50. ובכן, מגיע חודש דצמבר, משעת 8:00 אחר הצהריים עד 7:00 בבוקר, בתחילת קריאת תקופה, יהיה הזדמנות לאסוף עם חבריו לכיתה - זה יהיה בסביבות שעה 9:00 בצהריים - שבמהלכו אתה צולל לתוך סופי שלך יישומו של פרויקט צד חברים לכיתה, חברים, ומזון. זה יהיה בסביבות שעה 1:00 לפנות הבוקר, כאשר את המנה הראשונה של אוכל הגיעה. וזה על ש04:00 שנה מסוימת בHackathon CS50. אבל השיא האמיתי של הקורס הוא התכוונתי ליריד CS50, קמפוס רחב תערוכת פרויקטי הגמר שלך, כדי שבני משפחה וחברים כולם הוזמן, כפי שהמגייסים שלנו ו החברים שלנו מהתעשייה. זו, למשל, היא הצצה אנשים 2,000 פלוס שכבר השתתפו השנים האחרונות. ביטויים מסוג זה אינם נדירים, ובאופן דומה לעשות חברים לכיתה להתענג על דברים מה שהשגת. ובעצם, לשם כך, יש לנו אירוע התחלה של טווח, גם כן. אם דברים כמו ערעור לך את זה, או אתה לפחות סקרן לדעת מה זה, יודע שמסורת חדשה של הקורס נקרא יום פאזל CS50. וזה הונהג כמה שנים לאחור כדי באמת לאותת לקמפוס שמדע המחשב הוא לא על תכנות, וזה בהחלט לא כ מחבק רק התלמידים האלה שיש להם ניסיון קודם. זה באמת על פתרון בעיות באופן כללי יותר. וכך פאזל היום, במשך כמה העבר עכשיו שנים, התפתח נחמד שותפות עם החברים שלנו ב פייסבוק, שבו יהיה נהדר פרסים ופיצה מעבר לנהר ב i-המעבדה בשבת הקרובה. ראש לכתובת אתר שעם שתיים או שלוש חברים, אם ברצונך לקחת חלק במסורת חדשה זו. אז אני רוצה לשאול אותך, כי לשמור על אחד דבר בראש, ויש לנו רק שתי דקות בקליפ ש לסגור היום. 73% הוא המספר לזכור. עוגה, יותר מדי, תמתין לכם בחוץ זה הטרנספט כפי שאנו לדחות רק כמה רגעים, שהוא מסורת של הקורס, גם כן. אבל זה ציטוט מהמפתח תכנית הלימודים של הקורס שכדאי לזכור. מה שחשוב בסופו בקורס זה הוא לא כל כך שבו אתה בסופו של יחסית לחבריו לכיתה שלך, אבל שבו לך, בשבוע 12, בסופו של קרוב משפחה כדי את עצמך בשבוע 0. אבל הצצה שנעזוב אותך עם לכאן היום היא אחד שעבר את זה כאן על ידי אותו דניאל, שעשה וידאו wrdly רק לפני רגע. אני משאיר אותך עם המבט הזה של מה שלפנינו. וכמו שאנחנו עושים את זה, אם היינו יכול CS50 צוות מהחלק הקדמי של החדר לבוא על עד השלב לצייר כל יותר מתמונה ויזואלית כאל מה מחכה לכם בשנה זו - מקבל מביך. אנחנו נסיים בזה כאן על המסך. [השמעת מוסיקה] דוד Malan: זה CS50. [מוסיקה - מאט וקים, "זה בסדר"] רמקול 1: אני אוהב את CS50 יותר מחתולים. רמקול 2: Whoaaaa! [שחוק] מלאן דוד: זה, אם כן, הוא CS50. אנחנו אראה אותך ביום שישי. [מחיאות כפות ומריעות] קריין: בCS50 הבא, על הבמה הדגמה לא הולכת כמתוכנן. מלאן דוד: אנחנו רוצים למצוא מייק סמית בספר הטלפון הזה. ובכן, מה הם האינסטינקטים שלך? אני יכול לקפוץ בערך לאמצע ספר טלפונים, להציץ, לראות כי אני בM, ואני יודע עכשיו שמייק סמית היא לא לשמאל. הוא חייב להיות בצד ימין. ולכן בשלב זה, אנחנו ממש יכול לקרוע - בשלב זה, אנחנו ממש יכולים לקרוע - בנקודה זו, אנו יכולים השאלה לקרוע את ספר טלפונים במחצית. [פריטה ukelele]