[Chơi nhạc] [MUSIC - Rossini, "RANZ DES VACHES "TỪ WILLIAM TELL] [MUSIC - THE BEAT Tiếng Anh, "tháng ba Của người đứng đầu SWIVEL "] [Vỗ tay và cổ vũ] DAVID Malan: Vì vậy, đây là CS50. Tên tôi là David Malan. Và 73% của bạn không có kinh nghiệm trước khi với khoa học máy tính, trái với những gì bạn nghĩ. Vì vậy, hôm nay chúng tôi nghĩ chúng tôi sẽ bác bỏ ở đó không quen, nhưng cũng cung cấp cho bạn một cảm giác, cho những người bạn với sự thoải mái hơn, mà hướng bạn có thể đi học kỳ này. Vì vậy, chúng ta hãy bắt đầu với điều này. Tôi thực sự không có ý tưởng những gì bên trong của một máy tính, mặc dù, như bạn, tôi sử dụng nó mỗi ngày. Nhưng đó là một số loại hộp, và có không nhiều đầu vào nó. Tối thiểu, có, những gì? Có thể là một dây nguồn. Và thực sự với một thành phần này, điện, chúng ta dường như có khả năng làm khá một chút những ngày này. Nhưng vào cuối ngày, chúng tôi phải đại diện cho những điều mà chúng tôi quan tâm. Chúng ta phải thể hiện thông tin trong một số hình thức. Và có lẽ bạn đang mơ hồ nhất quen thuộc với ý tưởng của nhị phân hoặc bit bằng cách nào đó hoặc khác, máy tính giảm đến số không và những người thân. Nhưng chúng ta có thể chấp nhận điều đó và ít nhất đặt một chút ánh sáng để điều đó không? Vì vậy, tôi có những ít đèn bàn ở đây. Tôi có một ổ cắm điện ở đây. Và tôi sẽ đề nghị bên trong máy tính của tôi là ít nhất một trong những điều này, một cái gì đó có khả năng đang được bật hoặc tắt. Trong trường hợp này, nó thực sự là một chiếc đèn bàn, nhưng ở mức độ thấp hơn, nó là một cái gì đó được gọi là một bóng bán dẫn. Nhưng trong thế giới của chúng tôi, đó là một chiếc đèn bàn, vì vậy Tôi sẽ đi trước và cắm này thành điện năng của tôi ở đây. Và tôi cho rằng sử dụng đơn giản, thiết bị đơn giản, chuyển đổi đơn giản này, tôi có thể đại diện cho thông tin. Ví dụ, ngay bây giờ, tôi đại diện không có gì, phải không? Tôi đại diện cho những gì tôi sẽ gọi 0 hoặc sai, trái ngược với một cái gì đó thực sự có mặt. Nhưng nếu tôi chỉ cần bật công tắc này, Bây giờ tôi đã đại diện cho một 1. Vì vậy, việc sử dụng này phần rất đơn giản bộ nhớ, nếu bạn muốn, tôi có thể đại diện thông tin. Bây giờ không may, máy tính của tôi không thể làm gì nhiều. Nó chỉ có thể đại diện cho hai giá trị trên toàn thế giới - 0 hoặc 1. Nhưng một giải pháp rõ ràng là những gì, bây giờ, nếu chúng ta muốn mở rộng của máy tính của chúng tôi bộ nhớ và đại diện cho hơn hơn chỉ là 0 và 1? Vâng, chúng ta hãy lấy một chút như vậy. Chúng ta hãy lấy chuyển đổi khác, một bóng bán dẫn, tuy nhiên bạn muốn suy nghĩ về nó. Hãy để tôi đi trước và cắm này vào máy tính của tôi là tốt. Và tôi sẽ yêu cầu bồi thường, bây giờ, mà bởi sử dụng nhiều hơn một chút và điện chuyển nhiều hơn các thiết bị chuyển mạch trên và ra, tôi có thể đại diện như vậy hơn thông tin. Vì vậy, ngay bây giờ, đây là 1. Nếu tôi muốn bây giờ đại diện cho 2, tôi có thể làm điều này. Nhưng thông thường, quy ước, như chúng tôi sẽ cuối cùng nhìn thấy, tôi sẽ phải làm điều này. Vì vậy, đây là 0, đây là 1. Đây sẽ là 2. Và không đáng ngạc nhiên, điều này sẽ là 3. Vì vậy, theo cách này, vẫn còn, có thể chúng tôi đếm lên nữa không? Nếu tôi nhận được một chút thứ ba, một chuyển đổi thứ ba, số lượng cao nhất tôi có thể bây giờ là những gì tính đến từ 0? Vì vậy, 7 nếu tôi bắt đầu từ 0, phải không? Bởi vì nếu tôi biến ánh sáng này và thực sự cắm này thứ ba và cuối cùng ánh sáng vào ổ cắm điện của tôi ở đây, sau đó tôi có khả năng đại diện cho bất kỳ trong hai giá trị ở đây, hai giá trị ở đây, hai giá trị ở đây - và vì vậy tôi có thể đại diện cho 2 lần 2 lần 2, hoặc tám giá trị có thể. Và nếu tôi bắt đầu kế toán tại 0, do đó đó là 0, 1, 2, 3, 4, 5, 6, 7. Vì vậy, nhị phân này. Nó thực sự là đơn giản như vậy. Và tôi cho rằng điều này thực sự khá quen thuộc với hầu hết tất cả mọi người trong căn phòng này. Hãy để tôi đi trước và mở một ít soạn thảo văn bản ở đây. Và bạn có thể nhớ lại từ hồi phổ thông rằng chúng tôi đã có những thứ như hàng trăm nơi, nơi hàng chục, và những nơi. Và nhớ lại rằng nếu bạn đã có một số thập phân số, giống như một cái gì đó ngẫu nhiên như 123, bạn sẽ cơ bản viết ra trong các hình thức của ba cột. Và tại sao là 1, 2, 3 gì chúng ta biết như 123? Vâng, trong cột ngoài cùng bên trái, chúng ta có một trong 100 cộng với hai 10s, vì vậy đó là 120, cộng với ba số 1, vì vậy đó là 123. Bây giờ thế giới mà chúng ta chỉ được chiếu sáng là chính xác giống như bạn đã quen thuộc với nhiều năm, ngoại trừ bây giờ, các cột của chúng tôi không phải là quyền hạn của 10. Chúng chỉ là quyền hạn của 2. Vì vậy, trong khi đó là nơi những người thân, điều này là có được vị trí hàng hai, đây là sẽ là nơi bốn chân. Và bởi vì tôi chỉ sử dụng đơn giản các cơ chế để biến những thứ và tắt - điện đang chảy hoặc điện không chảy - Tôi hoàn toàn không có cùng ý nghĩa phạm vi như 0 đến chín. Chúng tôi sẽ giữ nó siêu đơn giản trong thế giới của máy tính. Tôi chỉ có 0 hoặc 1 - tắt hoặc bật, sai hay đúng. Và vì vậy những gì tôi đang đại diện cho ngay bây giờ là 1, 1, 1, bởi vì mỗi đèn được chiếu sáng. Vâng, đó là mang lại cho tôi một trong 4 cộng với một 2, do đó đó là 6, cộng với một trong 1, và đó là 7. Và ergo hiện trình tự này của ba bit đại diện cho số 7. Vì vậy, tất cả các thời gian này, bên trong của bạn máy tính, có được bất kỳ số bóng bán dẫn, bất kỳ số lượng của các bit. Nhưng vào cuối ngày, chúng tôi có thể đại diện cho thông tin như chỉ đơn giản là như vậy. Bây giờ không may, chúng tôi đã chỉ tính lên đến 7 trong CS50 vậy, đến nay, nhưng hy vọng chúng ta có thể làm một chút tốt hơn thế. Và thực sự chúng ta có thể. Giả sử chúng ta như con người chỉ tự ý quyết định rằng chúng ta sẽ kết hợp các con số như 1, 2, 3, 4, 5, 6, 7, với các chữ cái cụ thể của bảng chữ cái. Và vì lý do lịch sử, tôi sẽ bắt đầu có phần tùy tiện, nhưng tôi sẽ nói, con người, chúng ta sẽ quyết định như một tiêu chuẩn, trên toàn cầu, mà 65 đại diện cho số chữ A. 66 sẽ đại diện cho B. Dot, dấu chấm, dấu chấm. 90 sẽ đại diện cho Z. thư Và giả sử, nếu chúng ta thực sự đặt một số nghĩ vào đó, chúng ta có thể đưa ra với những con số cho dấu chấm than và chữ thường, và thực sự, những người khác đã làm điều đó cho chúng ta. Vì vậy, bây giờ chúng tôi đã có bit mà chúng ta có thể đại diện cho số, con số mà chúng ta có thể đại diện cho chữ cái, và với thư chúng tôi bây giờ có thể bắt đầu soạn email và in các ký tự trên màn hình. Vì vậy, hãy để tôi mời, nếu tôi có thể, tám tình nguyện viên dũng cảm - người không nhớ xuất hiện không chỉ trên máy ảnh nhưng trên mạng Internet - để đến đây và đại diện cho tám như vậy bit, thay vì ba. Vì vậy, làm thế nào về một, hai? Làm thế nào về ba? Làm thế nào về bốn trong ánh sáng màu xanh, năm trên kết thúc? Về một người nào đó ở đây? Sáu trước, bảy ở phía trước, và tám ở phía trước, là tốt. Vì vậy, tôi chỉ tình cờ đến chuẩn bị với một bó toàn bộ các mẩu giấy. Và trên những mảnh giấy là những con số đại diện cho những gì cột các bạn sẽ đại diện. Vì vậy, bạn sẽ được - tên của bạn là gì? HỌC SINH: Anna Leah. DAVID Malan: Anna Leah, bạn sẽ là cột 128S. Bạn là? HỌC SINH: Chris. DAVID Malan: Chris sẽ được cột 64s. Bạn là? HỌC SINH: Dan. DAVID Malan: Dan sẽ được cột 32s. HỌC SINH: Pramit. DAVID Malan: Pramit sẽ được cột 16s. HỌC SINH: Lillian. DAVID Malan: Lillian sẽ là 8s. HỌC SINH: Jill. DAVID Malan: Jill sẽ được cột 4s. HỌC SINH: Mary. DAVID Malan: Mary sẽ là 2s, và? HỌC SINH: David. DAVID Malan: David sẽ là cột 1s. Vì vậy, nếu các bạn có thể bước một chút về phía trước để mọi người có thể nhìn thấy. Những gì các bạn không nhìn thấy là trên trở lại của những mảnh giấy là một cheat sheet nhỏ mà sắp hướng dẫn tám bit hoặc nâng cao tay của họ hay không giơ tay lên. Nếu bàn tay của họ tăng lên, họ đại diện cho một 1. Nếu tay của họ vẫn xuống, họ đại diện cho một 0. Trong khi đó, chúng tôi khán giả nên có thể tìm ra, trên cơ sở này lập bản đồ, những gì ba chữ cái này anh chàng này về giải thích rõ ràng. Vì vậy, chỉ trong một thời điểm, bạn sẽ đọc những dòng đầu tiên ra mặt sau của cheat sheet của bạn, và bạn đang hoặc sẽ tăng hoặc không giơ tay lên. Nếu bạn là 1, bạn nâng cao, nếu bạn là 0, bạn đứng đó lúng túng, chỉ cần như thế. Đi. Số lượng những gì, đầu tiên và quan trọng nhất, là những kẻ đại diện cho? 66. 66, phải không? Chúng tôi có một 1 trong cột 64s, 1 trong cột số 2. Cung cấp cho tôi 66, vì vậy xuất hiện được đại diện cho B. Vì vậy, các bạn đã viết - OK, thế là đủ. B. Vì vậy, bây giờ chúng ta hãy chuyển sang thư thứ hai của chúng tôi. Đi. Ai là nhanh nhất ở môn toán đây? Vì vậy, 79. Một lần nữa, nếu chúng ta cộng tất cả các cột trong đó có một 1, hiện nay, chỉ như chúng tôi đã làm trước đây với các đơn giản nhất ví dụ 7, chúng tôi bây giờ có được số 79. Mà theo bản đồ của chúng tôi là thư O. Vì vậy, chúng tôi hầu như có. B, O. Và cuối cùng, đi. Là họ đại diện cho những gì bây giờ? Ít sự đồng thuận. Đó chỉ là một tiếng thì thầm tuyệt đối. Có, đó là trong thực tế 87. Tốt. Vì vậy, nếu bây giờ chúng ta trở lại bản đồ có tới - chúng ta hãy bắt đầu cuộc gọi biểu đồ ASCII của chúng tôi, Mã tiêu chuẩn Mỹ cho Trao đổi thông tin. Cung cấp cho chúng ta thư - không "bo" nhưng "cung". Và đó là một hoàn hảo gợi ý cho các bạn để có một cây cung và đầu vào trở lại. Cám ơn rất nhiều. [Vỗ tay] DAVID Malan: Bạn có thể giữ chúng. Mặc dù trên thực tế, sẽ bất cứ ai như một chiếc đèn bàn, cũng? [HOOT TỪ TƯỢNG] DAVID Malan: Đèn bàn? [Cười] DAVID Malan: Thật sao? Đèn bàn cho tất cả mọi người? Được rồi. Vì vậy, bắt đầu từ rất đơn giản nguyên tắc, chúng tôi bây giờ không chỉ tính tăng từ 0 tất cả các con đường lên đến 7, chúng tôi đã cho rằng chỉ bằng cách ném hơn bit hoặc đèn nhiều bóng bán dẫn hơn tại vấn đề này, chúng ta có thể đại diện cho số lớn hơn và lớn hơn, và ergo, phạm vi lớn hơn và lớn hơn bảng chữ cái, như tiếng Anh. Và chỉ cần chúng ta hãy về đức tin cho hôm nay mà tương tự như chúng ta có thể bắt đầu đại diện cho đồ họa và video và bất kỳ số phương tiện truyền thông khác mà chúng tôi quen thuộc ngày nay. Vì vậy, đây là CS50, và trong lớp này cùng với các bạn là, một lần nữa, rất nhiều bạn cùng lớp có ít kinh nghiệm như bạn. Và tôi chỉ đề cập đến điều này bởi vì khá thường xuyên, bao gồm như gần đây là một trong những sinh viên năm nhất tư vấn cho các sự kiện và ở thứ hai mùa xuân cuối cùng của tư vấn sự kiện, chúng ta thường nghe các sinh viên từ chối khi đến với bảng CS, tốt, Tôi đã suy nghĩ về việc này giới thiệu lớp học, nhưng tôi không thực sự là một người máy tính. Hoặc, nhưng tất cả mọi người chắc chắn biết nhiều hơn tôi. Và tôi đặt điều này trong phông chữ lớn nhất có thể, để truyền tải thông điệp này đó không phải là trong thực tế các trường hợp. Và nếu bạn đang tự hỏi, nên Tôi, trên thực tế, ở đây? Nhận ra rằng không chỉ là của khóa học này tiêu đề Giới thiệu về máy tính Khoa học, đó là Giới thiệu về máy tính Khoa học I. Vì vậy, có thực sự là một thứ hai giới thiệu như vậy. Vì vậy, bạn không phải là, trên thực tế, tại địa điểm sai. Và trong số những mục tiêu của tôi có ngày hôm nay là để làm dịu bớt những lo ngại như vậy bạn có thể có, nhưng cũng vẽ một hình ảnh của những gì trong cửa hàng cho sinh viên ít hơn và thoải mái hơn cũng như trong khóa học này. Nhưng trước tiên, một từ trên một trong các tờ rơi bạn có ngày hôm nay, trong đó một số câu hỏi thường gặp. Đó là một tầm nhìn của chúng ta trong một thời gian bây giờ để giới thiệu một phân loại mới lựa chọn vào khóa học này - cụ thể là, SAT / UNSAT. Triết học đối với tôi, nó là nhiều hơn, quan trọng hơn nhiều là học sinh trong lớp này tham gia với vật chất, được thử thách bởi các tài liệu, và lo lắng xa, ít về các cơ chế điểm thực tế và lớp thư ở học kỳ kết thúc, nhưng thực sự nắm lấy khóa học và tài liệu của nó. Và thực sự cảm thấy điều này, nói chung, cho những gì thú vị cho họ, để cảm thấy thách thức và thưởng nhưng mà không sợ thất bại. Và quả thực, điều này cũng là một định kỳ chủ đề trong này và khác giới thiệu các khóa học trong các lĩnh vực khác, mà bạn có lo lắng này khi nói đến đặt ngón chân của một người trong vùng nước xa lạ. Bản thân tôi, vào năm 1995, là một sinh viên năm nhất. Tôi đã rất nhiều tập trung vào việc một chính phủ tập trung ở đây. Nhưng tôi sẽ luôn luôn lớn lên với một chút về sự quan tâm trong khoa học máy tính. Tôi luôn luôn muốn. Nhưng trở lại sau đó, thậm chí, tôi đã sợ hãi này thậm chí bước chân trong CS50, rất nhiều vì vậy mà tôi thậm chí không mua sắm nó sinh viên năm nhất năm. Và lý do duy nhất tôi đặt một chân vào thứ hai năm cửa là vì tôi được phép mang nó vượt qua / thất bại. Nhưng thậm chí đạt / không đạt yêu cầu mà tôi nhận được lên các dây thần kinh để làm cho một cuộc hẹn với Giáo sư Kernehan vào thời điểm đó, mang tấm lớn giấy này, và yêu cầu ông cho chữ ký của mình và của ông cho phép để khám phá vùng biển này không quen thuộc. Và nó đã không giúp đỡ trong những năm gần đây rằng khi làm điều này trong CS50, khi chúng tôi được sử dụng để được vượt qua / không, sẽ tương tự hàng chục hoặc hàng trăm bạn học cùng lớp của bạn phải đưa ra, Thiên Chúa cấm, ở trước Sanders với hình thức này, mà trong một số đại diện cho tâm trí không có khả năng, Tôi dám nói, để thực hiện là mức đồng nghiệp của bạn. Đó là vô lý, nhưng tôi nghĩ rằng có tâm lý đó. Và có bao giờ được trong nền văn hóa này của SAT / UNSAT, hoặc thông qua / không hơn nói chung, trong khóa học này, hoặc thực sự trong khuôn viên trường này. Vì vậy, năm nay chúng tôi thay đổi điều đó. Tôi sẽ là một nửa ngây ngất của lớp này hay hơn đã kết thúc lên tham gia CS50 SAT / UNSAT. Trong thời gian một năm, nó sẽ là tuyệt vời nếu gần như tất cả mọi người là. Sau đó có lẽ chúng ta sẽ làm việc trên lớp thư tại Đại học Harvard Đại học nói chung. Nhưng hiện nay, chúng tôi sẽ làm điều này trong của chúng tôi lĩnh vực riêng, và tôi sẽ chân thành khuyến khích bạn xem lại những câu hỏi thường gặp và đặt câu hỏi như bạn thấy phù hợp, do đó, hy vọng bạn, không giống như tôi, sẽ không khá có mà yếu tố sợ hãi tương tự khi khám phá những gì có thể một nơi xa lạ. Vì vậy, CS50 là gì? Nó là một giới thiệu về doanh nghiệp trí tuệ của máy tính khoa học và nghệ thuật lập trình. Nhưng điều đó không có thực sự nghĩa là gì? Vâng, cho đến nay, chúng ta đã nói rất ngắn gọn về đại diện thông tin. Nhưng giả sử rằng chúng tôi thực sự muốn làm điều gì đó với nó. Chúng ta cần phải giới thiệu khái niệm những gì chúng tôi sẽ gọi một thuật toán. Một thuật toán là một thủ tục, một quá trình, một tập hợp các hướng dẫn làm một cái gì đó. Và một thuật toán có thể là một cái gì đó siêu đơn giản. Ví dụ, một ví dụ mà một số của bạn có thể là quen thuộc là này điều ở đây. Vì vậy, cuốn sách này ở đây là ngày càng ngày, nhưng một khi có một thời gian, nó có một toàn bộ rất nhiều tên và số điện thoại. Và quả thực, nếu tôi muốn tìm một người nào đó trong danh bạ điện thoại này - nói, một người nào đó tên là Mike Smith - Tôi có thể tìm thấy Mike Smith trong bất kỳ số cách khá đơn giản. Tôi có thể bắt đầu ngay từ đầu và chuyển đến trang 1, không có. Trang 2, không có. Trang 3. Là thuật toán, được đó quá trình, đúng không? Vì vậy, nó là đúng, phải không? Tôi là loại một thằng ngốc để làm nó trong rằng cách, nhưng cuối cùng tôi sẽ tìm họ S, và hy vọng Mike là trong phần đó, và tôi sẽ trở thành thực hiện với thuật toán của tôi. Nhưng chắc chắn nó không trực quan. Hầu hết mọi con người hợp lý trong này phòng sẽ không làm điều đó. Những gì bạn đã có thể thực hiện? Bạn muốn đã đi thẳng vào giữa, phải không? Khoảng vào giữa. Và bạn nhận ra, oh, đây là những bà Vì vậy, Mike Smith, tên là Smith, là không, rõ ràng, sau đó trong nửa bên trái của cuốn sách. Ông phải về phía S là ở bên phải. Và vào thời điểm này, mặc dù hầu hết chúng ta không làm điều này trong thực tế, chúng ta có thể nghĩa đen xé vấn đề này trong một nửa. [Cổ vũ và vỗ tay] DAVID Malan: Cảm ơn bạn. [Cổ vũ và vỗ tay] DAVID Malan: Bạn có nghĩa là có thể phá này vấn đề trong một nửa, để lại tôi với, nghĩa đen, một nửa vấn đề lớn. Vì vậy, nếu danh bạ điện thoại này là - và nó có lẽ là - khoảng 1.000 trang, bây giờ nó chỉ có 500. Nếu tôi làm điều này một lần nữa và tôi nhận ra, oh, chết tiệt, tôi đã đi quá xa, tôi đang ở Ts phần, tôi có thể tương tự - theo nghĩa bóng hoặc nghĩa đen - trích xuất danh bạ điện thoại - nó đã thực sự dễ dàng hơn nhiều thời điểm đó. Tôi nghĩa là có thể trích xuất danh bạ điện thoại một nửa, để lại cho tôi bây giờ với không 1000, không 500 - 250 trang. Và tôi có thể đi 125, và một nửa số đó, và một nửa số đó, và một nửa số đó, cho đến khi cuối cùng tôi sẽ được trái với chỉ là một trang duy nhất. [Cười] DAVID Malan: Đó là một phần tôi thất bại trên. Một trang duy nhất mà Mike là hy vọng. Bây giờ những thuật toán khác nhau có thể được loại đánh giá hoặc đánh giá trong cách khác nhau. Người đầu tiên là rất tuyến tính, phải không? Chuyển trang, tìm kiếm Mike. Chuyển trang, tìm kiếm Mike. Nó rất tuyến tính. Nếu có một trang hơn trong điện thoại cuốn sách, nó có thể sẽ đưa tôi thứ hai hơn, thêm một đơn vị thời gian, Tuy nhiên, chúng tôi đang tính toán thời gian. Vì vậy, tôi có thể rút ra như thế này dòng này ở đây, đó là kích thước của vấn đề tăng dần từ trái sang phải - danh bạ điện thoại được nhỏ hơn để lớn hơn - và thời gian là sẽ tăng lên trên trục thẳng đứng, lớn hơn danh bạ điện thoại là. Vì vậy, n chỉ là một biến chung các nhà khoa học máy tính sử dụng để đại diện cho một số giá trị, một số số. Vì vậy, n sẽ tăng tuyến tính. Tăng gấp đôi kích thước của danh bạ điện thoại, đó là sẽ đưa tôi gấp đôi thời gian, rất có thể, để tìm Mike. Bây giờ tôi có thể có được thông minh về điều này, phải không? Tôi đã nhận được chán một cách nhanh chóng. Có thể làm điều này bằng cách hàng hai. Vì vậy, hai trang, sau đó bốn, sau đó sáu, sau đó tám. Và tôi có thể bắt đầu bay qua nó một nhanh hơn chút, mặc dù có nguy cơ nhỏ của vượt quá của Mike, nhưng đó không phải là đường cong sẽ là tất cả những gì khác nhau. Nó vẫn sẽ là một thẳng dòng, nhưng nhanh hơn một chút. Nhưng tôi đã làm gì? Tôi thực sự đã làm một cái gì đó về cơ bản tốt hơn. Tôi đã đạt được những gì chúng tôi sẽ gọi logarit thời gian, nhật ký của n, trong đó màu xanh lá cây này đường có nhiều, nhiều, nhiều hơn cạnh ít thẳng vào nó. Và thay vào đó, nó cho thấy, vì nó sắp xếp của phương pháp tiếp cận vô cực bao giờ nên dần dần, mà tôi thực sự có thể mất một 1.000 trang danh bạ điện thoại, tăng gấp đôi kích thước của nó năm tiếp theo - vì cho rằng rất nhiều nhiều người di chuyển vào thành phố. Vì vậy, bây giờ tôi đã có 2.000 trang, nhưng làm thế nào nhiều hơn bước là thông minh hơn thuật toán sẽ mất? Chỉ là một. Ý tôi là, đó là một điều mạnh mẽ. Nếu chúng ta đi đến 4.000 trang năm tiếp theo, đó là sẽ đưa tôi chỉ có hai bước nữa. Vì vậy, bạn có thể ném lớn hơn và lớn hơn vấn đề với tôi, không giống như các trang web là ném vấn đề lớn hơn và lớn hơn mỗi ngày tại của Google và Facebooks của thế giới, và nó không phải một vấn đề lớn. Bởi vì tôi đặt nhiều suy nghĩ và chăm sóc vào thuật toán của tôi mà để giải quyết vấn đề hiệu quả. Và quả thật, đó sẽ là một trong các mục tiêu của khóa học này. Bạn sẽ, trên đường đi, học cách lập trình. Bạn sẽ học cách lập trình trong bất kỳ số lượng ngôn ngữ. Nhưng vào cuối ngày, khóa học là về việc giải quyết vấn đề và nhận được tốt hơn giải quyết vấn đề - và, như trong trường hợp như thế này, giải quyết vấn đề hiệu quả hơn. Bây giờ vậy, đến nay, chúng tôi đã làm điều này khá trực quan. Hãy giới thiệu một cái gì đó khá chung được gọi là giả. Vì vậy, chúng tôi cuối cùng sẽ nhận được, trong khóa học này, để ngôn ngữ lập trình khác nhau. Nhưng hôm nay chúng tôi sẽ làm điều đó trong tiếng Anh như cú pháp, mà bạn chỉ cần loại nói những gì bạn có ý nghĩa, nhưng bạn đã bao giờ nên gọn gàng và bạn không lo lắng về ngữ pháp và câu hoàn chỉnh. Bạn chỉ cần thể hiện bản thân như chính xác càng tốt. Vì vậy, giả là tiếng Anh như cú pháp đại diện cho một ngôn ngữ lập trình. Và hướng tới mục tiêu đó, chúng tôi đề nghị bây giờ chúng ta mô hình quá trình chúng tôi chỉ mô tả các tính một chút gì đó khác nhau, lần này tham gia một nhìn vào phim năm phút này sản xuất bởi những người bạn của chúng tôi tại TED mà xác định những gì là giả, định nghĩa suy nghĩ là thuật toán, và thậm chí mặc dù ví dụ bạn đang về để xem , trong bản thân nó, siêu đơn giản, đó là sẽ bắt đầu để cho chúng ta tinh thần mô hình, từ vựng, mà để làm nhiều, phức tạp hơn nhiều các thuật toán khá nhanh chóng. [IMG BEGIN xem lại] [Chơi nhạc] Người kể chuyện: một thuật toán là gì? Khoa học máy tính, một thuật toán là một thiết lập các hướng dẫn để giải quyết một số bước vấn đề bằng cách bước. Thông thường, các thuật toán được thực hiện bởi các máy tính, nhưng con người chúng ta có các thuật toán, là tốt. Ví dụ, làm thế nào bạn sẽ đi về đếm số người trong một căn phòng? Vâng, nếu bạn đang như tôi, bạn sẽ có thể điểm ở mỗi người, một ở một thời gian, và đếm từ 0. 1, 2, 3, 4, và vv. Vâng, đó là một thuật toán. Trong thực tế, chúng ta hãy cố gắng thể hiện nó một bit chính thức hơn trong giả - Cú pháp tiếng Anh như tương tự như một ngôn ngữ lập trình. Cho N bằng 0. Đối với mỗi người trong phòng, thiết lập N bằng N cộng thêm 1. Làm thế nào để giải thích giả này? Vâng, dòng một tuyên bố, có thể nói, một biến gọi là N và khởi tạo giá trị của nó về 0. Điều này chỉ có nghĩa là vào đầu thuật toán của chúng tôi, điều mà chúng tôi đếm có giá trị 0. Sau khi tất cả, trước khi chúng tôi bắt đầu đếm, chúng tôi đã không tính bất cứ điều gì được nêu ra. Gọi này biến N chỉ là một quy ước. Tôi có thể gọi nó là hầu hết bất cứ điều gì. Bây giờ dòng hai demarks khởi đầu của một vòng lặp, một chuỗi các bước mà sẽ lặp lại một số lần. Vì vậy, trong ví dụ của chúng tôi, bước chúng tôi đang dùng đang đếm người trong phòng. Bên dưới dòng hai là dòng ba, trong đó mô tả chính xác như thế nào chúng tôi sẽ đi về đếm. Thụt đầu dòng có nghĩa là nó ba dòng mà sẽ lặp lại. Vì vậy, những gì mà giả được nói là rằng sau khi bắt đầu từ 0, đối với mỗi người trong phòng, chúng tôi sẽ tăng N 1. Bây giờ là thuật toán này có đúng không? Vâng, chúng ta hãy nổ trên nó một chút. Nó làm việc nếu có hai người ở trong phòng? Chúng ta hãy xem. Trong dòng một, chúng ta khởi N 0. Đối với mỗi hai người, sau đó chúng tôi tăng N 1. Vì vậy, trong lần đầu tiên thông qua vòng lặp, chúng tôi cập nhật N 0-1. Trên chuyến đi thứ hai thông qua cùng vòng lặp, chúng tôi cập nhật N 1-2. Và như vậy bằng cấp của thuật toán này, n là 2, mà thực sự phù hợp với số người trong phòng. Cho đến nay, như vậy tốt. Làm thế nào về một trường hợp góc, mặc dù? Giả sử có 0 người trong phòng - bên cạnh tôi, những người làm kiểm. Trong dòng một, chúng ta khởi N 0. Thời gian này, tuy nhiên, dòng ba không thực hiện ở tất cả vì không có một người trong phòng. Và do đó N vẫn là 0, mà phù hợp với số lượng người trong phòng. Khá đơn giản, phải không? Nhưng người tính cùng một lúc là khá hiệu quả, quá, không có? Chắc chắn chúng ta có thể làm tốt hơn. Tại sao không tính hai người tại một thời điểm? Thay vì đếm 1, 2, 3, 4, 5, 6, 7, 8, và vân vân, tại sao không đếm, 2, 4, 6, 8, và như vậy? Nó thậm chí có vẻ nhanh hơn, và nó chắc chắn là. Chúng ta hãy thể hiện tối ưu hóa này trong giả. Cho N bằng 0. Cho mỗi cặp người trong phòng, thiết lập N bằng N cộng 2. Thay đổi khá đơn giản, phải không? Chứ không phải là số lượng người một tại một thời điểm, chúng tôi thay vì tính họ hai tại một thời điểm. Thuật toán này là như vậy hai lần nhanh như trước. Nhưng nó là đúng? Chúng ta hãy xem. Nó làm việc nếu có hai người ở trong phòng? Trong dòng một, chúng ta khởi N 0. Cho rằng một đôi người, sau đó chúng tôi tăng N bởi hai. Và như vậy bằng cấp của thuật toán này, N là 2, mà thực sự phù hợp với số người trong phòng. Giả sử tiếp theo mà có 0 người trong phòng. Trong dòng một, chúng ta khởi N 0. Như trước đây, dòng ba không thực hiện ở tất cả, vì không có bất kỳ cặp của người trong phòng. Và do đó N vẫn là 0, mà thực sự phù hợp với số người trong phòng. Nhưng những gì nếu có ba người ở trong phòng? Làm thế nào điều này giá vé thuật toán? Chúng ta hãy xem. Trong dòng một, chúng ta khởi N 0. Đối với một cặp của những người này, sau đó chúng tôi tăng N 2. Nhưng sau đó những gì? Có không phải là một cặp đầy người trong phòng, vì vậy dòng hai không còn được áp dụng. Và như vậy bằng cấp của thuật toán này, N vẫn là 2, đó là không đúng. Thật vậy, thuật toán này đã cho là lỗi, bởi vì nó có một sai lầm. Cho phép khắc phục với một số giả mới. Cho n bình đẳng cho mỗi cặp 0 của người trong phòng. Thiết lập N bằng N cộng 2. Nếu một người vẫn còn độc thân, thiết lập N bằng N cộng thêm 1. Để giải quyết vấn đề này cụ thể, chúng tôi đã giới thiệu, trong dòng bốn, một điều kiện, nếu không được biết đến như một chi nhánh mà chỉ thực hiện nếu có một người mà chúng ta không thể đôi với nhau. Và vì vậy bây giờ, liệu có một hoặc ba hoặc bất kỳ số lẻ của người dân trong các phòng, thuật toán này bây giờ sẽ đếm chúng. Chúng ta có thể làm tốt hơn? Vâng, chúng ta có thể đếm trong 3s hoặc 4s hoặc thậm chí 5s và 10s, nhưng ngoài ra, nó sẽ có được một chút khó khăn đến điểm. Vào cuối ngày, cho dù thực hiện bởi các máy tính hoặc con người, các thuật toán chỉ là một tập hợp các hướng dẫn với để giải quyết vấn đề. Đây chỉ là ba. Vấn đề gì bạn sẽ giải quyết với một thuật toán? [END xem video] DAVID Malan: Đó là lần duy nhất Tôi sẽ xuất hiện dưới dạng phim hoạt hình. Nhưng mà câu chuyện lá đi, bây giờ, là làm thế nào chúng ta có thể làm tốt hơn? Chia thành ba và bốn chân, chúng ta nói, chúng ta có thể đếm người nhanh hơn, nhưng chúng ta có thể về cơ bản làm tốt hơn? Và tôi đặt cược có thể. Nếu chúng ta giới thiệu một chút của riêng của chúng tôi giả ở đây, tôi sẽ đề xuất chúng tôi có thể đạt được một dòng như thế này. Chúng tôi sẽ không tính người một, hai, ba, bốn. Chúng tôi sẽ không đi hai, bốn, sáu, tám. Chúng ta sẽ làm tốt hơn cơ bản khi xem xét lại vấn đề, và trong này trường hợp, tận dụng một cách khác sử dụng đúng mức tài nguyên. Chỉ trong một khoảnh khắc, tôi hy vọng bạn sẽ tha thứ và hài hước chúng tôi bằng cách đứng lên trong nơi, lúc này chúng ta sẽ yêu cầu mỗi của bạn để có trên trong của bạn tâm trí số 1. Sau đó bạn sẽ ngày càng lúng túng, như thời gian trôi qua, tìm một người khác đang đứng, kết hợp số của bạn với nhau bằng cách thêm chúng. Một trong những bạn sau đó sẽ chạy đua để ngồi xuống đầu tiên, và những người khác sẽ lặp lại. Vì vậy, nói cách khác, bằng cách gieo hạt tất cả bạn số 1, và sau đó kết hợp những số 1 vào 2 và những 2s vào 4s, với tất cả mọi người ngày càng ngồi xuống, chúng ta nên, vào cuối thuật toán này, chỉ có một khoản vay linh hồn người đã không ngồi xuống đủ nhanh nhưng người có khán giả toàn bộ số trong mình hoặc tâm trí cô. Vì vậy, nếu bạn muốn, chúng ta hãy đi trước và - bước một - đứng lên tại chỗ. Và thực hiện. [Đám đông thì thầm] DAVID Malan: Bạn có biết nơi Lauren? 729? [Đám đông thì thầm] DAVID Malan: Tất cả phải không? [Đám đông thì thầm] DAVID Malan: Được rồi, chúng ta nên được gần kết thúc. Chúng ta thấy một đồng nghiệp đứng ở đây vẫn còn. Người khác cần phải được kết hợp? Nếu các bạn muốn bắt cặp. Một người nào đó lên hàng đầu. Tại sao tôi không giúp một tay đây. Cho rất ít người vẫn còn đứng, những gì con số làm bạn có trong tâm trí của bạn? HỌC SINH: 78. DAVID Malan: 78 cộng - người đang đứng ở đây? HỌC SINH: 39. DAVID Malan: Thêm 39. Cộng với những người khác vẫn còn đứng? 81? OK, những người khác? 81 khác? Wow. Và sau đó những gì trong trở lại? HỌC SINH: 49. DAVID Malan: 49, cộng với? HỌC SINH: 98. DAVID Malan: 98 cộng? Là ai đó? 12? Tốt công việc. [Cười] DAVID Malan: Oh, 112 - oh. Tốt công việc! [Cười] [Vỗ tay] DAVID Malan: Bất cứ ai khác vẫn còn tồn tại? Xin lỗi? HỌC SINH: 99. DAVID Malan: 99. Bất cứ ai khác vẫn còn đứng? Và tổng số học sinh ở đây thực sự là, theo - bạn có một số lượng? Oh, con số thực tế của người dân trong phòng, theo tài khoản mà các nghiên cứu sinh giảng dạy đang làm trên đường của tất cả mọi người trong, là 729. Vì vậy, ra khỏi một chục sinh viên Harvard người tính bản thân, Câu trả lời là 637. [Cười] DAVID Malan: Vì vậy, gần gũi. Nhưng vẫn còn. OK, vì vậy đó là một giảng dạy thời điểm, phải không? Điều này bây giờ là những gì chúng tôi mô tả như là một lỗi. Một nơi nào đó trên đường đi, chúng tôi đã làm một số số học sai, hoặc một người nào đó ngồi xuống, hoặc trái, hoặc một cái gì đó đã đi sai. Nhưng đó là tốt. Bởi vì thậm chí vẫn còn, chúng tôi đã khá gần. Và tôi cho rằng chúng tôi đã đến sai trả lời nhanh hơn rất nhiều hơn tôi sẽ có sử dụng phương pháp tiếp cận tuyến tính hơn tôi. Vì vậy, chúng ta hãy giả sử chúng ta đã thực sự nhận được rằng sửa chữa, nhưng nghĩ rằng bây giờ về những gì đã xảy ra mỗi lần, so với của tôi chỉ riêng của thuật toán ngây thơ. Một, hai, ba. Nếu có thực sự là 729 hoặc 637 người ở đây, mà đã có thể lấy tôi nghĩa là 637 hoặc 729 pointings của các ngón tay và incrementing tổng số của tôi. Và tôi có thể làm tốt hơn một chút bởi đi hai, bốn, sáu, tám, và tăng gấp đôi tốc độ, thậm chí gấp ba hoặc tăng gấp bốn lần, phụ thuộc như thế nào tôi có thể làm điều đó đếm trong đầu tôi. Nhưng phương pháp này mà các bạn mất là cơ bản khác nhau. Bởi vì ngay từ đầu, tất cả các bạn đứng dậy. Vì vậy, tất cả 729. Và sau đó theo nghĩa đen một nửa các bạn ngồi xuống. Và sau đó, một một nửa của bạn ngồi xuống. Và sau đó, một một nửa của bạn ngồi xuống. Và tổng số lần mà bạn các anh có thể đã ngồi xuống là khoảng tám hoặc tổng số chín hoặc mười lần, phụ thuộc vào tổng số của chúng tôi là. Và chúng ta có thể sắp xếp của làm này theo cách khác. Nếu chúng tôi đã có 1.024 người trong phòng, tổng số lần bạn có thể giảm một nửa 1.024 người là 10. Bây giờ nghĩ về nó trong một hướng khác. Giả sử, lố bịch, mà chúng tôi đã, nói bốn tỉ người trong căn phòng này, hoặc một căn phòng lớn hơn một chút. Bao nhiêu lần chúng tôi đã có thể đi thông qua thuật toán này, chẳng hạn một nửa của lớp mà ngồi xuống? Nó chỉ sẽ mất 32 như vậy hoạt động, ngay cả trong một lớp học của kích thước bốn tỉ. Tại sao? Vì bốn tỉ đi vào hai tỷ đồng, đi đến một triệu, đi vào 500 triệu USD, đi vào 250 triệu, dấu chấm, dấu chấm, dấu chấm. Tôi chỉ có thể làm phân chia một số 32 lần, lúc này, tất cả mọi người ngoại trừ một người sẽ còn đứng vững. Và đó cũng là sắp xếp của một mạnh mẽ ý tưởng rằng ngày càng chúng tôi sẽ cố gắng tận dụng trong khóa học này, và trong lập trình và khoa học máy tính hơn nói chung, các vi trùng của một ý tưởng với sau đó chúng ta có thể giải quyết vấn đề nhiều, nhiều hơn nữa mạnh mẽ. Vì vậy, chúng tôi bắt đầu khá đơn giản với giả và một chàng trai trong một căn phòng, nhưng bây giờ với một căn phòng đầy người Chúng ta đã thực hiện cơ bản tốt hơn. Vâng, bây giờ chúng ta chuyển đổi từ giả một số mã thực tế. Ngôn ngữ này bạn đang về để nhìn thấy xảy ra được gọi là JavaScript, và chúng tôi sẽ quay trở lại này đối với kết thúc học kỳ. Đó là một ngôn ngữ lập trình mà bạn sử dụng để làm cho trang web và như vậy khác phần mềm những ngày này. Và chúng tôi đã sử dụng nó, nhờ một người bạn của chúng ta tại Đại học Stanford, để mã hóa một số thông tin ẩn ở đây. Đây là nghệ thuật steganography, có thể nói, nơi bạn có thể ẩn thông tin trong những gì nếu không xuất hiện có tiếng ồn hoặc hoàn toàn khác nhau hình ảnh hoàn toàn. Nhưng nhúng trong hình ảnh đặc biệt này thực sự là một thông điệp bí mật của các loại. Vì vậy, hãy để tôi đi trước và kéo lên cùng một hình ảnh ở đây, điều này thời gian trong một trình duyệt web. Và tôi sẽ vẫy tay tại một số các chi tiết cho ngày hôm nay, đặc biệt đối với những người bạn của những người này trông giống như không chỉ JavaScript nhưng Hy Lạp, như một ngôn ngữ hoàn toàn xa lạ. Nhưng đây là một ví dụ về một ngôn ngữ lập trình. Và bây giờ, có trên đức tin dòng đầu tiên của mã này - và theo mã số, tôi chỉ có nghĩa là văn bản. Văn bản mà tôi có lẽ đã thật gõ vào Microsoft Word, nếu tôi có phần mềm phù hợp để sau đó làm điều gì đó với nó. Mã nguồn lập trình, lập trình mã, thực sự chỉ là văn bản, và nó trông khác nhau dựa trên những gì ngôn ngữ bạn đang sử dụng, không giống như tiếng Anh và tiếng Tây Ban Nha và Nga tất cả nhìn khác nhau khi bạn gõ vào bàn phím của bạn. Vì vậy, dòng đầu tiên này, cho bây giờ mất trên đức tin, chỉ cần mở ra một hình ảnh từ Internet, mà ồn ào đồ họa chúng tôi chỉ thấy. Dòng tiếp theo đây là một ví dụ của một vòng lặp, và chúng tôi thực sự thấy rằng cùng thuật ngữ trong đoạn video TED. Một vòng lặp là cái gì đó xảy ra lần nữa và một lần nữa, và mặc dù điều này hoàn toàn có vẻ khó hiểu, với từ khóa cho, và một số dấu ngoặc đơn, và một số dấu chấm phẩy. Chúng tôi sẽ trở lại mà chẳng bao lâu, nhưng vòng lặp mà có bản chất là nói với các chương trình, duyệt qua tất cả những điểm ồn ào, từ trái sang phải, trên xuống dưới. Bởi vì vào cuối ngày, một hình ảnh như thế này - và bạn có thể thực sự loại nhìn thấy nó trên máy chiếu này - thực sự chỉ là một lưới các điểm. Vì vậy, chúng ta có thể xác định mỗi người chấm bởi một toạ độ x, y, và với điều này chương trình, bây giờ chúng tôi có thể bắt đầu làm điều gì đó cho những dấu chấm. Vì vậy, những gì tôi sẽ đi trước đây và làm là tôi sẽ thực hiện một số thay đổi. Đầu tiên tôi sẽ đi trước để loại bỏ mọi tác động trên màu xanh lục và xanh tiếng ồn, và tôi sẽ đi trước và gõ như sau phải thừa nhận là khó hiểu cú pháp. im cho hình ảnh. thiết lập màu xanh ở vị trí x, dấu phẩy, vị trí y, 0. Nói cách khác, tôi muốn chỉ tắt tất cả các màu xanh chấm trong hình ảnh đó. Tôi sẽ đi trước bây giờ và nhấp Run này / nút Save, và bạn sẽ nhận thấy ở phía bên phải, kết quả hình ảnh xuất hiện. Bây giờ màu xanh lá cây siêu của nó, nhưng đó không phải là đáng ngạc nhiên, bởi vì tôi thật sự quay ra, bằng cách làm cho 1 một 0, tất cả các màu xanh trong hình ảnh đó. Vâng, bây giờ chúng ta hãy làm điều đó nhiều hơn một chút. im cho hình ảnh, dấu chấm setGreen, x, y. Và rằng chỉ có nghĩa là iterate từ trái bên phải và sau đó trên xuống dưới. Biến đó bằng một giá trị từ 0, là tốt. Tiết kiệm. Và trên máy chiếu, bạn có thể không thực sự thực sự nhìn thấy bất cứ điều gì cả. Trên màn hình máy tính xách tay của tôi, nếu tôi ngang chỉ đúng cách, tôi có thể thấy một chút của một hình ảnh, bởi vì họ vẫn còn một số màu đỏ trong đó. Nếu bạn đã từng nghe từ viết tắt RGB - màu đỏ, xanh lá cây, màu xanh - nó đề cập đến thành phần này của một hình ảnh sử dụng chỉ những người ba màu sắc. Và ngay bây giờ, chúng tôi đã vứt bỏ tất cả các màu xanh lá cây, tất cả các màu xanh, nhưng không có nhiều màu đỏ. Vì vậy, hãy để tôi khuấy động đỏ. Làm thế nào tôi có thể làm điều đó? Vâng, đầu tiên, tôi sẽ hỏi Chương trình này là một câu hỏi. Tôi sẽ đi trước và chúng ta hãy gọi nó một biến, giống như trong đại số. Bạn có thể có x hoặc y hoặc z. Tôi sẽ khai báo một biến và nói, đặt vào biến này, tạm thời, giá trị của hình ảnh getRed giá trị tại x, y. Và một lần nữa, chúng tôi sẽ trở lại với tất cả chi tiết này trong tương lai. Nhưng hiện nay, chỉ cần mang trên đức tin dòng này là yêu cầu của chương trình, những gì là giá trị màu đỏ tại x, y? Ở đó chấm cụ thể? Sau đó, tôi sẽ làm điều gì đó với nó. Sau đó, tôi sẽ làm hình ảnh bộ chấm đỏ tại x, y, y nhưng thời gian này tôi sẽ thúc đẩy nó bằng cách thực hiện lần màu đỏ, hãy nói, 10. Vì vậy, tăng nó theo hệ số 10. Hãy để tôi thu nhỏ bây giờ và nhấp chuột có thể chạy / Save. Và thì đấy, đó là có toàn bộ thời gian, mặc dù đôi mắt của con người không thể hoàn toàn thấy nó. Vì vậy, một lần nữa, điều này bây giờ là mã thực sự, một ví dụ về một ngôn ngữ mà chúng ta sẽ đến trở lại trước khi dài. Nhưng nhận ra, đặc biệt là những người bạn không có kinh nghiệm như vậy, nó khá Ngay sau đó, chính chúng ta sẽ là viết mã như rằng có. Trong thực tế, một công cụ mà bạn tất cả phần nào quen thuộc, có lẽ, là CS50 của của công cụ trình mua sắm, đó là thực sự khởi động lại vào mùa hè này bởi một số cựu học sinh của CS50 của, bây giờ chuyển TF. Vì vậy, điều này sẽ xảy ra là một trang web được xây dựng trong một ngôn ngữ được gọi là PHP. Nó sử dụng một cơ sở dữ liệu được gọi là MySQL, điều mà chúng tôi sẽ có được bàn tay của chúng tôi bẩn sau trong học kỳ. Nhưng tin hay không, thậm chí một cái gì đó như thế này cuối cùng là giảm đến đơn giản nhất của mạch, điều kiện và chi nhánh, giống như những người chúng ta đã thấy chỉ là một thời điểm trước trong video TED. Những gì tôi nghĩ rằng tôi muốn làm bây giờ là phần không chỉ một cái gì đó chúng tôi các nhân viên đã thực hiện cho khuôn viên trường, mà là một cái gì đó một cựu sinh viên - ba sinh viên, trong thực tế - thực hiện trong năm vừa qua, Sierra, Daniel, và Sam, người cuối cùng trong số họ không có trước kinh nghiệm lập trình khi ông đã CS50. Và dự án cuối cùng của họ, họ trưng bày, tại Hội chợ CS50, một ứng dụng gọi là wrdly, mà là một chương trình dựa trên web mà họ đã thực hiện video này mà tôi nghĩ rằng tôi muốn chia sẻ với cung cấp cho bạn một cảm giác chỉ là những gì có thể vào cuối hạn của. [Chơi nhạc] DAVID Malan: Đó là từ tuần của Zero đến tuần 12 năm vừa qua. [Vỗ tay] DAVID Malan: Như một lời trêu ghẹo, quá, thực sự để kích thích sự thèm ăn của bạn là gì có thể, bạn có thể đã thấy rồi, hoặc có thể sớm nhìn thấy, market.cs50.net, một công cụ mới cho đội bóng của khóa học có được làm việc trên, lần này trong phối hợp với sinh viên Harvard Cơ quan, như vậy mà bắt đầu trong năm nay và tiếp tục hy vọng vào điều này đến mùa hè, bạn sẽ có một tiêu chuẩn cơ hội trong khuôn viên trường để mua và bán những thứ bạn quan tâm. Và với các đối tác thông qua HSA, bạn sẽ cũng có thể thả các mục tắt trong một trong những cửa hàng vật lý HSA tại một số điểm trong tương lai, để điều proxy, đặc biệt là khi bạn tốt nghiệp và không nhất thiết muốn loại bỏ điều này, nhưng thực sự phải trả nó chuyển tiếp để folks những người có thể theo bạn đây trong khuôn viên trường. Vì vậy, thêm vào đó đi. Nhưng một chút cụ thể hơn, một công cụ đó là đi ra khỏi CS50 trong gần đây năm, mà một số bạn có thể quen thuộc và những người khác của bạn có thể được googling bây giờ, tại CS50.net/2x, bạn sẽ tìm thấy một liên kết đến một phần mở rộng Chrome đó là chỉ thị như thế nào bạn có thể sử dụng JavaScript, cùng một ngôn ngữ, chúng tôi sử dụng với tháp Eiffel một thời điểm trước đây, để thực hiện tốc độ phát lại 2x cho tất cả các video iSites Harvard. Đây là cái gì đó là xây dựng vào máy nghe nhạc video của riêng của CS50. Nhưng điều này cũng vậy, nếu bạn bắt đầu đào vào mã nguồn, mà chúng tôi sẽ hạnh phúc làm cho có sẵn, bạn sẽ thấy như thế nào bạn thậm chí có thể giải quyết vấn đề như thế, thúc đẩy các vật dụng trong trang web với mà bạn đã cũng quen thuộc. Vì vậy, một từ bây giờ trên sân và mong đợi và những gì ở phía trước. Nói chung, chúng tôi thực sự sẽ thu thập đây vào thứ Hai và thứ Tư - mặc dù thứ sáu này, chúng tôi sẽ thu thập bởi vì Tuần lễ mua sắm - 1:00-2:00, mặc dù đôi khi cho đến khi 02:30. Cho rằng bạn nên có thể muốn hoặc phải mất một số lớp học vào lúc 2:00 PM trở đi, hoặc thậm chí phía trước, nhận ra Tất nhiên là ủng hộ những gì được gọi là tuyển sinh đồng thời, nhờ đó chúng ta sẽ hỗ trợ đơn yêu cầu Hội đồng quản trị Quảng cáo và dân chủ nhiệm khoa của bạn thay cho bạn nếu bạn có một cuộc xung đột ở đâu đó trong này 1:00-2:30 loạt. Đầu với URL trực tuyến cho biết thêm chi tiết. Nhưng về cơ cấu hỗ trợ đặc trưng CS50, cho sinh viên hơn và ít thoải mái như nhau, chúng tôi cung cấp các bài hát khác nhau của các bộ phận. Và đây là một vài tuần đi, nhưng Không lâu sau, bạn sẽ được yêu cầu để mức độ thoải mái của bạn. Bạn có trong số những người kém thoải mái, thoải mái hơn, hoặc nơi nào đó ở giữa? Và chúng tôi sẽ có ba khác biệt bài hát phục vụ cho chính là những khán giả. Vì vậy, tại không có điểm trong thời hạn nên bạn thậm chí cảm thấy như bạn đang cạnh tranh đối với bất cứ học sinh hơn hoặc nền ít hơn bạn. Thật vậy, khóa học được hiểu là nhiều hơn nữa hợp tác và nhiều mở rộng hơn đó. Trong điều khoản của bộ vấn đề, bạn sẽ tìm kiếm, quá, mà ngoài các phiên bản tiêu chuẩn của vấn đề mỗi tuần thiết lập, thường có một "hacker phiên bản "đó là có nghĩa là để được nhắm mục tiêu tại 5% đến 10% hoặc hơn của nhân khẩu học của những người thực sự trong số những người thoải mái hơn và muốn biết thêm của một thách thức hơn so với tiêu chuẩn phiên bản của pset mà hy vọng. Thêm chi tiết về những người được tìm thấy trong giáo trình. Nhưng cũng có thể được tìm thấy chi tiết trên các khóa học vào cuối ngày. Thông thường vấn đề đặt ra là do vào thứ Năm. Tuy nhiên, bạn có thể kéo dài nhiều của bạn thời hạn vào mùa thu này từ thứ Năm đến Thứ Sáu chỉ đơn giản bằng cách đáp ứng chúng tôi nửa chừng, vậy để nói chuyện, trả lời một số khởi động câu hỏi trong một số vấn đề của tuần bộ, mà sẽ tự động sau đó cung cấp cho bạn thêm 24 giờ. Chúng tôi cũng sẽ giảm thấp nhất của bạn Điểm, theo các giáo trình. Để cung cấp cho bạn một cảm giác về những gì các vấn đề bộ là - bởi vì nó thực sự vấn đề của khóa học thiết rằng cuối cùng xác định hầu hết các kinh nghiệm của học sinh, nhiều hơn so với bài giảng, nhiều hơn so với phần, hơn hơn so với hầu hết bất kỳ khác khía cạnh của khóa học. Năm ngoái, ví dụ, chúng tôi bắt đầu, như chúng tôi sẽ bắt đầu trong năm nay, với cào. Đặc biệt là vào thứ sáu này, chúng tôi sẽ sử dụng, cho Chỉ chưa đầy một ngày, một đồ họa ngôn ngữ lập trình, mà chúng tôi sẽ bắt đầu chương trình bằng cách kéo và thả mảnh ghép mà chỉ lắp ráp vật lý nếu nó có ý nghĩa làm như vậy một cách hợp lý. Tuần tới, chúng tôi sẽ nhanh chóng chuyển đổi sang C, khá cũ nhưng rất nhỏ và ngôn ngữ đơn giản mà sẽ cho phép chúng ta thực sự đi từ 0 đến 60 trên khóa học chỉ một vài tuần, và sau đó xâu những kỹ năng và kiến ​​thức của cùng một cấu trúc lập trình cơ bản vào ngôn ngữ bậc cao như PHP, JavaScript, nhưng những người khác vẫn còn. Năm ngoái, pset thứ ba trong khóa học là mật mã, một miền ứng dụng cụ thể, theo đó chúng tôi sinh viên thử thách để thực hiện bất kỳ chương trình số thuật toán mã hóa, mà để tranh giành hoặc xắp xếp lại các thông tin, mã hóa nó. Đối với các phiên bản của hacker, ngược lại, chúng tôi đã cho các sinh viên của hacker một tập tin từ một máy tính tiêu chuẩn Unix chứa tên người dùng và mật khẩu, thì sau đó đã được mã hóa, và chúng tôi thách thức những tin tặc sinh viên để giải mã, như tốt nhất có thể, những mật khẩu, vẫn còn trên đó cùng một miền. Tranh giành, một trò chơi mà một số của bạn có lẽ quen thuộc. Một mảnh pháp y, nơi mà chúng tôi yêu cầu học sinh phục hồi dữ liệu đã được nếu không sẽ bị xóa khỏi kỹ thuật số của riêng tôi thẻ flash nhỏ gọn của máy ảnh, bởi việc viết phần mềm để tìm ra, nơi là zero và những người thân trong mà máy ảnh kỹ thuật số mà trước đây bao gồm một hình ảnh JPEG? Một thách thức của các loại năm ngoái liên quan đến văn bản nhanh nhất kiểm tra chính tả có thể, cạnh tranh với bạn bè và bạn học cùng lớp nếu họ muốn. Thực hiện n Puff Huff, một chương trình nén. Và sau đó kết thúc học kỳ với CS50 Tài chính, một ứng dụng dựa trên web với mà bạn tạo ra một trang web ETrade-như mua và bán cổ phiếu, do đó, để nói chuyện, bởi thực sự kéo gần thời gian thực báo giá Yahoo! Tài chính. Những gì chúng tôi đã không làm năm ngoái là một bộ vấn đề còn lại dù sao một yêu thích. Nếu bạn đã bao giờ đi shuttle.cs50.net, bạn sẽ thấy một người sử dụng giao diện một chút như thế này. Nhưng hai năm trước đây, các lớp học thực hiện, sử dụng Google Maps và các Google Earth plug-in và một chút các hiểu biết với lái xe xung quanh khuôn viên trường, do đó mục tiêu của trò chơi này là, như bạn có thể thấy một số trong những gương mặt, đang lái xe xung quanh khuôn viên trường tìm kiếm nhân viên, nghiên cứu sinh giảng dạy và CA, và khi bạn, đặt chúng lên xe buýt đưa đón của bạn. Không ai trong số họ thực sự dường như có mặt ở đây, vì vậy chúng tôi sẽ nhập cheat code. [Cười] DAVID Malan: Hiện chúng tôi đi. Được rồi. Và đây hiện là nhân viên tẩm khắp khuôn viên trường. Và như bạn thấy, trên cánh tay phải bên của màn hình, xe buýt đưa đón có ghế trống. Và mục tiêu là viết mã với đó để mô phỏng này lái xe và chọn lên và thả tắt của hành khách. Cái đó luôn, sử dụng ngôn ngữ gọi là JavaScript. Vì vậy, nhận ra rằng các chương trình như thế sẽ là trên cùng một quỹ đạo của chúng tôi này năm, là tốt. Về, bây giờ, hỗ trợ bổ sung, chúng tôi có giờ làm việc. Như bạn có thể nhìn thấy trong ngôi nhà của mình phòng ăn hoặc trong Annenberg, chúng tôi sẽ ở trong nhà ăn phòng bốn đêm một tuần - Leverett, Pfoho, Eliot và Annenberg năm nay, 20:00-23:00. Và những gì chúng tôi nghĩ chúng ta sẽ làm trong năm nay là một cái gì đó một chút khác nhau. Nếu bạn nghe nhiều bất ổn năm ngoái đó là một chút quá căng thẳng, điều này giờ làm việc của năm, như chúng tôi sẽ mô tả tuần tới, sẽ có hệ thống hơn, theo đó khi đến nơi, bạn sẽ có cử đến một bảng cụ thể nơi nhiều nhân viên đang chờ đợi, và chúng tôi sẽ làm việc nhiều hơn nữa hữu cơ. Không xếp hàng hơn, iPad không hơn, nhưng chứ không có thân mật hơn cuộc trò chuyện xung quanh một bảng chỉ tám hoặc để học sinh, để chúng ta gần đúng cảm giác của những gì khác sẽ là một lớp nhỏ hơn nhiều. Chúng tôi cung cấp, cũng như, những điều chúng tôi gọi là walkthroughs, video quay tại thúc đẩy bởi một trong những giảng dạy của khóa học nghiên cứu sinh, Zamyla, trong đó cô bạn đi qua vấn đề của tuần bộ, cung cấp lời khuyên và thủ thuật cho thách thức ở phía trước. Và ngược lại, sau khi bộ vấn đề là do, năm nay, chúng tôi sẽ cũng phát hành clip nhỏ gọi sau khám nghiệm tử thi mà thực sự hướng dẫn bạn qua đại diện các giải pháp, cả tốt và xấu, thông qua đó bạn có thể suy ra như thế nào bạn có thể có hoặc nên có thực hiện giải pháp của riêng bạn. Và những gì chúng tôi sẽ cung cấp cho lần đầu tiên năm nay là tốt, đặc biệt cho những sinh viên tận dụng bản thân của của khóa học khác tài nguyên nhưng dù sao cũng đang gặp khó khăn tất cả quá nhiều, khóa học chính nó sẽ ghép những học sinh, như nguồn lực cho phép, với các giáo sư để bạn có một thân mật hơn nhiều cơ hội hơn nhà nhà ăn cho phép hỗ trợ một ngày-một. Bây giờ là một cái nhìn thoáng qua cuối cùng tại một số các trò chơi kết thúc trong cảnh. Bạn có thể làm quen với các CS50 Hackathon. Vâng, đến tháng mười hai này, từ 8:00 PM đến 7:00, ở đầu Thời gian đọc, sẽ là một cơ hội để thu thập với các bạn cùng lớp - này sẽ vào khoảng 9:00 PM - trong thời gian đó bạn nhảy vào cuối cùng của bạn thực hiện của dự án cùng với bạn cùng lớp, bạn bè, và thực phẩm. Đây sẽ là khoảng 1:00, khi các lô hàng đầu tiên của thực phẩm đến. Và đây là khoảng 4:00 rằng năm đặc biệt tại CS50 Hackathon. Nhưng đỉnh cao thực sự của khóa học là có nghĩa là Hội chợ CS50, một khuôn viên rộng triển lãm các dự án cuối cùng của mình, mà gia đình và bạn bè là tất cả mời, như nhà tuyển dụng của chúng tôi và bạn bè của chúng tôi từ ngành công nghiệp. Này, ví dụ, là một cái nhìn thoáng qua của 2.000 người cộng với những người đã tham dự năm qua. Biểu hiện như thế này không phải là hiếm, và làm tương tự như của bạn bạn cùng lớp thỏa thích trong điều bạn đã hoàn thành. Và trên thực tế, hướng tới mục tiêu đó, chúng tôi có một sự kiện khởi động của hạn, là tốt. Nếu mọi thứ như kêu gọi này đến bạn, hoặc bạn ít nhất tò mò như những gì này, biết rằng một truyền thống mới của Tất nhiên được gọi là CS50 Puzzle ngày. Và điều này đã thiết lập một vài năm trở lại thực sự là tín hiệu đến trường mà khoa học máy tính không phải là về lập trình, và nó chắc chắn không về ôm chỉ có những học sinh người có kinh nghiệm trước. Nó thực sự về giải quyết vấn đề nói chung. Và như vậy Puzzle ngày, trong vài qua năm nay, đã phát triển thành một tốt đẹp hợp tác với bạn bè của chúng tôi tại Facebook, theo đó sẽ có tuyệt vời giải thưởng và pizza qua sông tại i-phòng thí nghiệm này Saturday tới. Đi đến URL đó với hai hoặc ba bạn bè nếu bạn muốn chia trong truyền thống mới này. Vì vậy, tôi muốn yêu cầu bạn giữ một điều trong tâm trí, và chúng tôi đã có chỉ là một hai phút clip trên đó đóng cửa hôm nay. 73% là số để nhớ. Bánh, quá, sẽ chờ đợi bạn ở bên ngoài này Ngang như chúng tôi hoãn lại chỉ trong một vài khoảnh khắc, đó là một truyền thống tất nhiên, cũng. Nhưng đây là trích dẫn quan trọng từ chương trình học để ghi nhớ. Điều cuối cùng quan trọng trong khóa học này không phải là quá nhiều, nơi bạn kết thúc so với các bạn cùng lớp của bạn nhưng nơi bạn, trong tuần 12, kết thúc liên quan đến mình trong tuần 0. Nhưng cái nhìn mà chúng ta sẽ để lại cho bạn với ở đây hôm nay là một trong những cuối cùng này đây bởi cùng Daniel của chúng tôi, những người đã làm Video wrdly chỉ là một thời điểm trước đây. Tôi để lại cho bạn cái nhìn thoáng qua này về những gì ở phía trước. Và khi chúng ta làm điều này, nếu chúng ta có CS50 nhân viên từ phía trước của căn phòng đến trên lên sân khấu để vẽ tất cả các chi tiết của một hình ảnh trực quan để những gì đang chờ đợi bạn trong năm nay - việc khó xử. Chúng tôi sẽ kết thúc với điều này đây trên màn hình. [Chơi nhạc] DAVID Malan: Đây là CS50. [MUSIC - MATT & KIM, "Không sao đâu"] SPEAKER 1: tôi yêu hơn CS50 hơn mèo. SPEAKER 2: Whoaaaa! [Cười] DAVID Malan: Điều này, sau đó, là CS50. Chúng ta sẽ thấy bạn vào thứ sáu. [Vỗ tay và cổ vũ] Người kể chuyện: Tại CS50 tiếp theo, một trên sân khấu giới thiệu không đi theo kế hoạch. DAVID Malan: Chúng tôi muốn tìm Mike Smith trong danh bạ điện thoại này. Vâng, bản năng của bạn là gì? Tôi có thể nhảy gần đến giữa danh bạ điện thoại, liếc nhìn xuống, thấy rằng Tôi đang ở M, và tôi biết là Mike Smith không phải là bên trái. Anh phải ở bên phải. Và vào thời điểm này, chúng tôi nghĩa là có thể xé - vào thời điểm này, chúng tôi theo nghĩa đen có thể phá - vào thời điểm này, chúng ta có thể theo nghĩa bóng xé danh bạ điện thoại trong một nửa. [UKELELE strumming]