>> David: Xin chào, tôi tên là David Malan và đây là CS50. Và, đây không phải là điển hình của trường trung học khóa học của bạn máy tính khoa học. Khóa học này là một chút gì đó đặc biệt. Và nó không phải vì tôi dạy nó. đó là vì đây là một trong, chúng tôi thích nghĩ rằng, những người hiếm hoi các khóa học mà thực sự ép não của bạn rất nhiều và tiến độ của bạn rất nhiều mà vào cuối học kỳ của bạn thực sự cảm thấy thông minh hơn. Vì vậy, đó là cách tôi cảm thấy bản thân mình khi tôi đã khóa học này trở lại trong năm 1996. Tôi đã là một chính phủ tại thời ở đây sống trong Mather House. Và, I. [Cổ vũ] Như là khác, có năm người khác. Vì vậy, tôi đã là một chính phủ lúc đó. Và tôi đã là một chính phủ bởi vì tôi luôn luôn thích lịch sử. Tôi thích pháp luật hiến pháp tại trường trung học. Và như vậy, tôi đặt ra trên con đường này năm Freshmen làm những gì tôi làm tốt nhất, làm những gì tôi biết tôi thích. Và tôi sẽ luôn luôn được một chút của một geek, tôi luôn luôn bi bô cùng máy tính. Nhưng, tôi bản thân mình, có lẽ trêu là khi nhìn lại, tôi luôn xem các guys những người đã tham gia khoa học máy tính ở trường trung học của tôi, bạn bè của tôi như là geeks thực. Chưa hết, cuối cùng đã làm, năm thứ hai tôi đi này được gọi là khóa học ít CS50 mà thực sự đã làm tôi sợ đi riêng của năm thứ nhất của tôi. Và tôi đã là một trợ lý người sử dụng tại thời điểm. Vì vậy, tôi đã chắc chắn đã đủ điều kiện, ít nhất, để được trong số đó, những geeks người tôi thực hiện niềm vui của ở trường trung học. Nhưng, tôi đã sợ hãi. Có đó, nó đã có danh tiếng này vào thời điểm đó và có lẽ vẫn còn một phần rằng đó là một, đó là một khóa học đáng sợ. Nó đã được rất nhiều công việc. Nó đã được cứng và được nêu ra, đó là một trong những điều đó, Thiên Chúa của tôi, vỏ cây đã được đến nay tồi tệ hơn cắn của nó. Tôi tìm thấy bản thân mình thứ hai năm, lần đầu tiên, trên thực tế việc tìm kiếm niềm vui ở nhà. Và tôi không nói rằng điều này chỉ để pitch khóa học này cho bạn. đây là một hiện thực chính hãng cho tôi. Bây giờ, tôi nghĩ rằng, tại một điểm, tôi đã băng qua đường để geekdum đúng nơi tôi thực sự được sử dụng để hướng tới đêm thứ Sáu vì tôi có thể cuộn tròn ở phía trước của MacBook nhỏ của tôi và làm việc về vấn đề bộ của CS50. Vì vậy, vào thời điểm đó, tôi nghĩ rằng tôi đã rõ ràng qua đường. Và, mục tiêu của chúng tôi trong khóa học này không phải là để biến tất cả các bạn vào người đó, nhưng, chỉ để nói rằng có một chút gì đó đặc biệt về khóa học này, một khoa học chút gì đó đặc biệt về máy tính nói chung đặc biệt là những ngày này. Và, càng thích nghi chúng tôi đã tất cả đã vào công nghệ, các đồ chơi nhiều hơn chúng tôi mang theo trong túi của chúng tôi được tự máy tính. Tôi có nghĩa là, iPhone của tôi là thực sự là một máy tính có hiệu suất cao hơn máy tính xách tay của tôi đã được ở đại học. Bạn có thể làm rất nhiều việc gọn gàng với những việc này. Và bây giờ, hầu hết chúng ta trong phòng này, có lẽ chỉ cần sử dụng phần mềm của người khác, của người khác công cụ, của người khác giải pháp cho các vấn đề bởi vì chúng tôi đi đến iTunes, chúng tôi tải về một số ứng dụng từ các cửa hàng ứng dụng và Walla chúng tôi có thể làm điều gì đó thực sự gọn gàng. Tuy nhiên, vào cuối học kỳ này, bạn có thể là người làm điều đó giải quyết vấn đề. Bạn có thể là người giải quyết một số vấn đề, xây dựng được ứng dụng, mà phần của phần mềm, công cụ đó, hoặc là, một trong những chỉ amuses tôi, amuses bạn. Ví dụ, kiểm soát, nói, thư viện iTunes của bạn từ căn hộ của bạn với ứng dụng một cách rõ ràng rằng đã tồn tại hoặc bạn có thể tìm thấy lịch trình tàu con thoi dễ dàng hơn ví dụ. Vì vậy, trong thực tế, một trong những điều đầu tiên tôi đã làm sau khi uống CS50 được một lần nữa, nó có lẽ lúc này, đêm thứ sáu và thứ bảy điểm đêm, đã có cơ hội này tại thời điểm mà Harvard đã chạy xe buýt đưa đón. Và, cho đến ngày nay, họ vẫn có in lịch. Tuy nhiên, có thực sự không có nghĩa là trực tuyến tìm ra khi tàu con thoi tiếp theo được. Bây giờ, tôi đã không quan tâm, bởi vì mặc dù tôi sống ở Mather tôi đã không được trong số những người thường lấy tàu con thoi. Nhưng, tôi đã có rất nhiều bạn bè trong Pfoho ví dụ. Và một trong số họ hỏi tôi, tôi nghĩ rằng trong lúc một điểm. [Cổ vũ] Được rồi Pfoho tốt hơn Mather rõ ràng. Vì vậy, một trong những loại bạn bè của tôi của tôi đã suy nghĩ có lẽ tôi có thể viết một chương trình nhỏ để loại giúp đỡ bạn bè của tôi kiểm tra lịch trình tàu con thoi. Và do đó được sinh ra cậu bé tên là tàu con thoi awkwardly, điều này mảnh lexicon đã ở lại xung quanh cho một số số năm ít nhất là trong một số các upperclassmen. Vào thời điểm đó, đây là dòng lệnh này ít chương trình tinh thần tương tự Dos. Nó được chạy trong một môi trường UNIX. Vì vậy, nó không thực sự sexy cả. Bạn chỉ cần gõ một vài lệnh và nó đã nói với bạn khi các tàu con thoi được. Vâng, những ngày này đó là một ít phức tạp hơn. Và, nó thực sự đại diện của chính xác các loại dự án mà học sinh trong khóa học này kết thúc lên làm bởi các điều kiện kết thúc. Vì vậy, đây là phiên bản bốn, một số 15 năm sau, của Shuttleboy. Có vẻ Google Maps đã được một chút chậm ở đó. Nhưng, đối với những người bạn của những người có để có được ra khỏi đây sau khi lớp học và đi, nói, từ Memorial Hall và cần phải đi đến, nói, Quad. Vâng, bạn có thể để lại trong hai phút, nếu bằng, điều này thực sự không phải là làm việc cho bạn chỉ được nêu ra, hoặc bạn có như nhiều tùy chọn khác là bạn có thể muốn. Và, đến sớm, chúng tôi có thể sân này từ CS50, nó sẽ được cùng một năng lực của SMS. Bạn có thể văn bản Shuttleboy qua điện thoại. Bạn gọi Shuttleboy. số điện thoại của CS50 năm nay, tốt, đáng kinh ngạc này đã có sẵn, 617-BUG-CS50. Vì vậy, sẽ ra mắt sớm. Vì vậy, không gọi nó chỉ nào được nêu ra bởi vì tôi đã nhận khiển trách đối, ngay bây giờ nó đang được chuyển đến điện thoại di động hệ thống của chúng tôi đầu giảng dạy của đồng bào. Vì vậy, bạn sẽ chỉ có được anh ta nếu bạn có thắc mắc về lịch trình tàu con thoi ngay bây giờ. Tuy nhiên, đó sẽ sớm được thực hiện. Vì vậy, những thứ khác, trên thực tế, rằng chúng ta chính chúng ta đã dành mùa hè này trên thực sự để chuẩn bị cho học kỳ này là một bó toàn bộ các vấn đề khác mà chúng tôi muốn giải quyết. Ví dụ, có một toàn bộ rất nhiều thứ mà đi vào trong khuôn viên trường này vào một ngày nhất định. Và trên thực tế, đặt một cách khác, có một toàn bộ rất nhiều thứ đang diễn ra tại khuôn viên này mà tôi chắc chắn không bao giờ lợi dụng. Và, mặc dù bây giờ tôi choáng ngợp với bao nhiêu những thứ đang diễn ra, trong khuôn viên trường, tôi vẫn có vẻ không bao giờ để tìm ra thời gian. Nhưng, Walla, ngay cả ở đó, CS50 của bài giảng. Đó là nơi mà bạn có, vì vậy đây là một, đây là một chương trình chúng tôi đã viết cho tổng hợp tất cả các sự kiện trong khuôn viên trường. Và điều này đã được cái gì mà các học sinh khác trong cùng một khóa học này đã giải quyết một mình. Và, chúng tôi đã làm việc với các đơn vị khác trong khuôn viên trường để thực sự thực hiện điều này xảy ra. Nhưng điểm để CS50 thuật ngữ này là tất cả của các chương trình nhỏ, chúng tôi đã làm việc vào việc này một hoặc xem một cho tập hợp tất cả các tin tức của Harvard ở một nơi, tất cả các Tin tức của Google, tất cả những điều này sẽ có những gì được gọi là các API của, ứng dụng giao diện lập trình. Và điều này chỉ là nói ưa thích cho khả năng để cho người khác, mọi người trong phòng này, thực sự làm một cái gì đó với cùng một dữ liệu. Vì vậy, theo các điều khoản cuối cùng, nếu bạn quyết định thực hiện dự án cuối cùng liên quan đến tin tức hoặc các sự kiện hoặc bản đồ, cũng chúng tôi, ít nhất là một khóa học, sẽ làm cho rằng tất cả các dễ dàng hơn trong năm nay bằng cách cung cấp cho bạn một giao diện; một loại chức năng, do đó, để nói chuyện, phần mềm mà bạn có thể sử dụng trong các dự án của riêng bạn để vượt quá giới hạn, nơi học sinh, có lẽ, đã đi trong thời gian qua vì khuôn khổ này đã không được thay cho họ. Và một lần nữa, điều này tất cả đã bắt đầu, cho tôi ít nhất, một số 15 năm trước đây thực hiện Shuttleboy. Sau đó tôi gửi qua email Ken người bạn của tôi trong Pfoho. Tôi nói hey làm những gì bạn nghĩ? Đây có phải là hữu ích? Ông gửi nó ra trong danh sách mở Pfoho và Walla, tất cả những năm sau đó tôi là rõ ràng vẫn vắt sữa dự án này. Và điều gọn về nó, và đây là nơi mà quá một khóa học như thế này trong kỹ thuật và khoa học máy tính, tôi nghĩ, là một chút đặc biệt, là khi bạn làm công trình nhà của bạn và khi bạn làm các dự án của bạn trong khóa học này, bạn biết, nhiều người trong số họ, có, bạn sẽ đặt sang một bên và không thực sự sử dụng một lần nữa. Tuy nhiên, một số của nó, bạn sẽ. Và có điều này thật sự mạnh mẽ, ít nhất đối với tôi, điều này thực sự thú vị, khi bạn thực hiện điều gì đó và những người khác thực sự chăm sóc, những người khác không chỉ là nụ cười và vỗ nhẹ sắp xếp trên mặt sau của bạn và sau đó đi về cuộc sống riêng của họ. Họ thực sự sử dụng những gì bạn làm trong cuộc sống riêng của họ ngay cả khi nó là cái gì như là ngớ ngẩn hoặc đơn giản như chỉ cần tìm kiếm khi họ có thể nhận ra ở đây để đón các tàu con thoi bên cạnh Quad. Vì vậy, theo các điều khoản cuối cùng, đó là một trong những mục tiêu cho khóa học này, để trao quyền cho các bạn chỉ cần xác định một số vấn đề cho dù đó là trong khuôn viên trường hoặc hy vọng cũng vượt ra ngoài khuôn viên trường, và thực sự sử dụng kỹ năng riêng của bạn, tâm trí của riêng bạn và giải quyết vấn đề trong một số phần, công nghệ. Vì vậy, đây cũng là một khóa học như chúng tôi nói trong giáo trình và các khóa học chính thức mô tả mà dạy bạn làm thế nào để suy nghĩ và nó dạy bạn làm thế nào để giải quyết vấn đề hiệu quả hơn. Vâng, những gì hiện có nghĩa là gì? Vâng, khi bạn đã có 600 megahertz trong túi của bạn hoặc gigahertz ba dưới bàn của bạn ở nhà, bạn có thể giải quyết rất nhiều vấn đề có hiệu quả chỉ bằng sức mạnh vũ phu cắt. Tuy nhiên, có rất nhiều vấn đề trong thế giới này, cho dù đó là tìm kiếm, nói rằng, mạng của Facebook hoặc Internet thông qua Google, rằng nó không quan trọng tốc độ máy tính cụ thể của bạn là, không có cách nào ở địa ngục bạn đang đi để tìm kiếm hàng tỷ trang web một cách nhanh chóng trừ khi bạn thực sự tiếp cận vấn đề này một cách thông minh. Bạn không chỉ cần tìm kiếm, ví dụ, một danh sách rất lớn của tất cả các trang web trên trái đất từ trên xuống dưới tìm kiếm cái gì liên quan đến từ tìm kiếm bất cứ điều gì bạn đang tìm kiếm hy vọng Google và có lẽ Google và Facebook và bất kỳ của các thực thể lớn có rất nhiều người thông minh suy nghĩ về làm thế nào họ có thể tìm thấy dữ liệu nhanh hơn, làm thế nào họ có thể xử lý thông tin hiệu quả hơn, và, làm thế nào họ có thể chỉ nói chung về kết quả nhanh hơn để bạn có thể làm được nêu ra, điều thú vị hơn với các thiết bị này. Và như vậy, những gì chúng tôi có nghĩa là, mặc dù, bởi như thế nào, dạy người làm thế nào để suy nghĩ kỹ lưỡng hơn, nhiều thuật toán. Vâng, hình ảnh này luôn luôn có vẻ ít đi qua tốt. Và, nó có vẻ là đáng nhớ. Và tôi thậm chí còn hỏi chỉ ngày hôm qua bởi một sinh viên cũ, oh thì bạn sẽ làm được một điều danh bạ một lần nữa. Và tôi khá nhiều tại chỗ quyết định alright chắc chắn chúng tôi sẽ xây dựng một điều danh bạ. Và ông ta hỏi tôi khi bạn tore nó trong một nửa bên phải, tôi cũng như yeah kỹ thuật chúng tôi xé nó ra nhưng không phải trong cách, trong cách khoa học máy tính tôi sẽ có thể phá điều này trong một nửa. Và như vậy, đây là vấn đề mà chúng tôi trình bày một thời gian. Vì vậy, đây là danh bạ. Nó có ít nhất một ngàn hoặc hơn các trang. Và mục tiêu đơn giản ở tay rất thực tế trên thế giới là tìm, nói, một người ở đây. Vì vậy, Mike Smith, cuối cùng tên bắt đầu với S. Vì vậy, tôi là một con người điển hình, tôi nhận điện thoại cuốn sách này. Và bất cứ ai ra khỏi đó, điều gì sẽ bạn, một người điển hình, làm gì để bắt đầu việc tìm kiếm Mike Smith, rõ ràng là không biết trước những gì ông thực sự là trang trên. Quyền, do đó, bạn đi khoảng ở giữa, bên phải. Và vào thời điểm này trong câu chuyện, tôi có lẽ trong N hay M, bạn đã biết, cách khoảng một nửa thông qua danh bạ. Hóa ra, thời gian qua tôi đã làm ví dụ này tôi bằng cách nào đó tìm thấy bản thân mình trong phần hộ tống. Vì vậy, nó thực sự không bằng nhau cân bằng giữa A qua M và N qua Z. Tuy nhiên, ngày hôm nay, chúng tôi là, trên thực tế, trong M's, sao như vậy, bây giờ tôi đang ở M của. Nhưng takeaway của tôi là những gì bây giờ chỉ như là một con người bình thường off của đường phố? Tôi đi đâu tiếp theo cho Mike Smith. [Không nghe được] Và như vậy, chỉ có thể về điều này một nửa, phải, bởi vì S đưa ra sau khi M. Và như vậy, ở đây nằm trong bộ phim truyền hình trực quan. Điều đó không thực sự xé nó ra, phải. Tôi loại lừa xuống trung tâm. Nhưng, chúng ta biết rằng Mike là ít nhất không phải trong một nửa đó. Chúng tôi theo nghĩa đen có thể ném một nửa của vấn đề đi. Và tôi là trái với các vấn đề đó là về cơ bản vẫn cùng một điều, tìm Mike Smith trong một cuốn sách thực sự lớn. Tuy nhiên, vấn đề bây giờ là một nửa lớn. Nếu nó có một nghìn trang trước, bây giờ nó đã nhận 500. Bạn biết tôi, những gì có thể làm điều tương tự một lần nữa. Tôi có thể loại đệ quy hoặc lặp đi lặp lại làm điều tương tự. Bây giờ tôi không hoàn toàn ở S. Tôi đang ở T. Và như vậy, oh, tôi đã đi quá xa một chút. Nhưng, tôi biết bây giờ mà Mike không phải là để bên phải, đó sẽ là một số lớp học một ngày nào đó, nơi tôi chỉ có thể không rách điều đập, tôi đặt cược. Nhưng bây giờ, tôi biết anh không về bên phải. Vì vậy, bây giờ vấn đề đã được quartered. Vì vậy, tôi đã đi từ một ngàn đến 500-250 trang. Và một lần nữa, nếu bạn tiếp tục lý luận, tiếp tục toán học, tôi cắt vấn đề này trong một nửa, một nửa, một nửa cho đến khi cuối cùng tôi là một trong hai sẽ không tìm thấy bất kỳ Smith tại tất cả, không, hoặc tôi sẽ tìm thấy một trong tôi đang tìm. Nhưng, đó là, sau đó, đặt ra câu hỏi, là điều này tốt hơn so với bất kỳ phương pháp đơn giản chỉ cần nói, bạn đã biết, A, nope, B, không có, bắt đầu từ trái sang phải đi thẳng qua cuốn sách? Vâng, có bản năng. Nó sẽ nhanh hơn rất nhiều. Nhưng, làm thế nào ít hơn nhiều? Vâng, nếu tôi có một cuốn sách nghìn trang điện thoại hoặc giả 1.024 cho những người bạn của những người như quyền hạn của hai, bao nhiêu thời gian tôi có thể phải chia một nửa vấn đề này trước khi tìm ông Smith? >> Mười. >> David: Vì vậy, mười, phải. Nếu bạn có 1.024 trang và bạn phân chia chúng trong một nửa, một nửa, một nửa, một nửa, tôi làm điều đó có nghĩa là mười lần tôi đi từ 1.000 trang đến người tôi đang tìm trong các trang chỉ mười lượt. Và đó là loại gọn gàng, nhưng, bạn đã biết, nếu bạn suy nghĩ về nó bạn đã làm điều này tất cả của cuộc sống của bạn. Nó không phải là kịch tính. Nhưng hiện nay, mà danh bạ không chỉ dành cho Boston, nó cho Mỹ toàn bộ hoặc toàn bộ thế giới và điều này có hàng tỷ trang web trong nó, do đó, tưởng tượng một danh bạ với bốn tỷ trang. Làm thế nào nhiều trang lượt tôi sẽ phải làm tối đa để tìm Mike Smith trong danh bạ trang bốn tỷ? >> Đăng nhập hai cơ sở. >> David: Vì vậy, yeah, nếu bạn đang loại kiểu toán học này là cơ sở đăng nhập hai. Nhưng, nếu bạn nghĩ rằng 4-2000000000 to one tỷ đồng, do đó, một nửa tỷ. Tôi có nghĩa là, mà thực sự đi xuống khá tự whittles darn nhanh. Trong thực tế với 32 halvings của danh bạ và thậm chí từ bốn tỷ, tôi sẽ lấy xuống để một trang. Và đó là khi công cụ này sẽ mạnh mẽ, tôi nghĩ. Đó là khi các ý tưởng này có được hấp dẫn khi bạn có thể có một vấn đề bốn tỷ trang và trong 32 bước bạn có thể tìm thấy những người mà bạn đang tìm kiếm. Và như vậy, đó là những gì chúng tôi có nghĩa là khi chúng tôi nói rằng bạn sẽ tìm hiểu làm thế nào để suy nghĩ kỹ lưỡng hơn, nhiều thuật toán, thông minh hơn về giải quyết vấn đề. Và trả về là rất lớn khi bạn thực sự có thể làm điều này, và một lần nữa, đến thời điểm này của Googles của thế giới Facebooks người có sự sang trọng của việc có datasets lớn. Bạn đã có để tiếp cận những vấn đề này theo cách này nếu không nó chỉ đơn giản là không đi làm việc. Vâng, những gì là những gì đã làm các học sinh thực sự gọi lại? I, chúng tôi muốn làm những thứ ngớ ngẩn một chút đôi khi để loại đi cạnh tắt của những gì được nếu không thì rất nhiều vật liệu mới. Và như vậy, ông thực sự, cựu sinh viên này đã gửi cho tôi liên kết này mà tôi đã đi trước, chỉ cần cho đá và sau đó hối tiếc nó ở cuối, kéo lên trên utube ở đây. Vì vậy, tôi nghĩ tôi sẽ chia sẻ những gì một nhà khoa học máy tính không có nghĩa là khi anh nước mắt một danh bạ một nửa. [Cười] [Silence] [Không nghe được] >> Bạn biết hơn 200 trang, đẹp đường sạch, hợp pháp rách. [Cười] >> David: như vậy, tôi giả sử, công trình theo cách của mình quá. Vì vậy, những gì tôi đã nhận ra của khóa học này tất cả những năm trước đây là có, Shuttleboy, và sau đó có một văn bằng về khoa học máy tính, và sau đó có một PHD khoa học máy tính. Và đó không phải là những gì chúng tôi đang cố gắng để chuyển phần lớn sinh viên trong khóa học này vào. Hầu hết các bạn trong khóa học này sẽ không đi trên một lớn trong khoa học máy tính. Một số bạn có thể nhỏ, nhưng đối với một số bạn này sẽ là một khóa học cuối. Và đó là hoàn toàn tốt đẹp bởi vì khóa học này là, trong thực tế, cấu trúc theo cách mà ngay cả khi bạn chỉ phải trả phí của bạn trong vài tháng và bạn thực sự tập trung trong và bạn thực sự lấy làm ra nhiều của khóa học này là bạn có thể, bạn sẽ, trong Trên thực tế, được trang bị tốt để trở lại thế giới của bạn về kinh tế, sinh học, tâm lý học, áp dụng toán học, và thực sự tận dụng những gì là thú vị cuối cùng là một khóa học như chúng tôi hy vọng vì nó là khái niệm cơ bản thực tế. Và đó cũng là một cái gì đó là có lẽ một chút hiếm để tìm thấy. Tôi nghĩ rằng tôi muốn chia sẻ một vài ý kiến sinh viên từ mùa thu năm ngoái đặt trong hướng dẫn này gợi ý năm qua khi được hỏi về những gì bạn muốn nói với các sinh viên trong tương lai. Vâng, nếu bạn chưa xem xét các ý kiến, một sinh viên cho biết khóa học này sẽ mất một số tiền hợp lý thời gian của bạn lên. nhưng, nếu bạn đặt công việc của bạn vào một thế giới hoàn toàn mới, một toàn bộ, nếu bạn đặt công việc, nếu bạn đặt công việc vào, không sao, vì vậy đây là ngữ pháp của ông không phải tôi, vì vậy nếu bạn đặt, đặt trong công tác, một thế giới hoàn toàn mới sẽ mở ra cho bạn. Amazing bao nhiêu tôi đã học được chỉ trong 12 tuần. Một học sinh khác đã viết, bạn tốt hơn đi này hoặc bạn sẽ phải hối tiếc. Khác đã viết, thêm một chút thẳng thắn, nó sẽ kick ass của bạn và để lại cho bạn cảm giác tuyệt vời. Và rồi cuối cùng, chương trình này có lẽ là một cái gì đó tôi chỉ có thể hiển thị bằng văn bản, nhưng, thứ hai từ dưới đây. [Cười] Vì vậy, tôi không chắc chắn nếu bạn có nhiều bạn bè người đã khóa học này, nhưng loại của chúng tôi đã làm rất nhiều thiệt hại cho các sinh viên năm ngoái. Chúng tôi giới thiệu, lúc đầu, một số bài giảng, một vài câu đố, một vài vấn đề đặt ra, khái niệm này lolcats. Bạn không thể xem những gì tôi có thể thấy ở đây nhưng trong một thời điểm bạn sẽ thấy một thanh niên tên là hạnh phúc con mèo lãnh đạo của lolcat như vậy gọi là có người. Đây là một trong những tiền đạo internet ngu ngốc mà tôi nghĩ rằng thẳng thắn các dichotomy giữa hai quý ông ở đây và những gì chúng tôi bây giờ có trên màn hình là có lẽ. [Cười] Một trong những sử dụng không thích hợp nhất của nhà hát này đến nay. Và, tại sao chúng ta không làm cho nhiều hơn một chút thực tế hơn một chút khái niệm về cá nhân này thực sự giải quyết một vấn đề hiệu quả hơn. Một vấn đề đơn giản về một ngày của năm học nào là ngồi xuống hoặc đứng lên và bắt đầu đếm các sinh viên, gọi cuộn bên phải của các loại. Vâng, nhưng dù sao ngây thơ nhất, rất đúng phương pháp mà một giáo viên có thể lấy được một, hai, ba, bốn, năm, sáu, bảy, và chúng tôi muốn được ở đây một thời gian khá. Vì vậy, một cải tiến lề ngày này thậm chí là những gì mà bạn có thể đã làm khi còn bé? Làm thế nào để bạn đếm người nhanh hơn? Và, không bắt đầu đọc ra các hướng dẫn của riêng tôi? Những gì bạn đã có thể thực hiện khi còn bé? Bắt đầu đếm twos, phải, như vậy tôi là khá tốt ở hai, bốn, sáu, tám, mười, 12. Vì vậy, đó là một cái gì đó thú vị phải. Vì vậy, có bao nhiêu của cải tiến một là có? Vì vậy, nó rõ ràng là một yếu tố của hai. Tôi phải mất nhiều thời gian nửa. Nhưng, bạn biết những gì, như chúng tôi sẽ tìm thấy trong suốt học kỳ này, chuyện, như tăng tốc hoạt động của yếu tố thời gian bằng cách chỉ là một trong hai không phải là tất cả những gì thú vị bởi vì các tín hiệu tương tự ở đây trong thế giới máy tính được rằng tôi là một CPU Tôi là một máy tính, cũng heck, nếu tôi chỉ cần chờ 12 tháng, 18 tháng, tôi chỉ cần máy tính sẽ có thể tự nhiên, bởi số gigahertz tôi có trong tôi để có thể đếm được số người trong phòng này nhanh hơn. Vì vậy, các loại, các loại speedups tuyến tính như các yếu tố của hai yếu tố của ba, thậm chí gấp mười, những người quan tâm? Phải, chúng ta có thể ném phần cứng tại vấn đề. Chúng tôi có thể chờ đợi những điều trên. Chúng tôi có thể phát triển máy nhanh hơn. Tuy nhiên, trí tuệ, yeah đó là loại thông minh nhưng nó đã không thực sự thay đổi về cơ bản vấn đề. Tôi vẫn đi từ trái sang phải, trước ra sau. Nó thực sự cùng một thuật toán. Nhưng, tôi cung cấp mà chúng tôi có thể làm tốt hơn. Chúng tôi có thể làm thông minh hơn và điều này làm cơ bản triển khai thực hiện nhanh hơn. Nhưng, để chứng minh điều này, chúng tôi cần bạn hài hước với chúng tôi để chỉ một thời điểm. Và đó là vào thời điểm này, nơi nó sẽ được cho tôi nói ít hơn và bạn nói chuyện nhiều hơn nữa. Nhưng tôi cần bạn để thực hiện bước một với nhau, đó là nếu bạn sẽ hài hước chúng tôi, xin vui lòng đứng lên. Các hướng dẫn ở đây trên diễn đàn, bạn biết được, okay, một vài bạn phải ngồi xuống. Những người bạn ở lại, có chúng tôi đi, alright. Cảm ơn bạn. Vì vậy, chương trình ở đây là trước khi bạn. Bạn đang ở bây giờ các máy tính thực hiện chương trình này. Đó là khá tự giải thích tại điểm này. Có, bạn nên có số một. Nhận được nó? Phải, nhiều bạn có lẽ suy nghĩ này đã được anyway, lần đầu tiên năm thứ nhất. Vì vậy, hãy nghĩ đến bản thân, bạn là một trong số. Vì vậy, bước ba ở đây, cặp đứng off với một ai đó, thêm hai số điện thoại của bạn với nhau và thông qua đó tổng hợp như số mới của bạn và chúng tôi sẽ làm một kiểm tra sanity. [Tiếng ồn từ] đám đông Bạn có biết bao nhiêu chúng tôi có? >> [Không nghe được] >> Không có không nghe được []. >> Chúng tôi cần phải có một khoá câu trả lời. [Silence] >> Yeah. [Tiếng ồn từ] đám đông >> David: Tại thời điểm này các thuật toán cần được uốn lượn xuống. [Tiếng ồn từ] đám đông Có lẽ chúng ta nên đã đi với cách tiếp cận của tôi sau khi tất cả. >> 43. >> 163. >> David: Ooh số học ở phía trước của những người cộng với 300. [Cười] kiểm đếm cuối cùng của chúng tôi có được là gì? >> 180. [Cười] >> 1.200. >> 386. >> David: 386, và là bạn đứng cuối cùng? Là tất cả mọi người đó? Bạn có biết câu trả lời? >> Gì? >> David: Bạn có biết câu trả lời là gì? Chúng tôi đã không mang lại một khoá câu trả lời với chúng tôi như vậy, 386 là trong thực tế chính xác câu trả lời đúng cho lần đầu tiên. [Cổ vũ] [Vỗ tay] Đó là okay. [Vỗ tay] Rất, rất độc đáo được thực hiện. Vì vậy, các takeaway được gì vì đó chắc chắn cảm thấy một chút chậm hơn so với cách tiếp cận rất đơn giản nhưng dù sao cũng rất chính xác của tôi chỉ cần đi onesies và twosies và chỉ nhận được nó thực hiện với từ trái sang phải. Nhưng, những gì đã làm chúng tôi thực sự chỉ cần làm điều đó? Vâng, nếu có khoảng, hãy nói, 400 của bạn đứng ở một điểm, và sau đó một nửa của bạn, rất nhanh chóng, từ những gì tôi có thể nói, muốn ngồi xuống. Vì vậy, một nửa của bạn ngồi xuống, chúng tôi đã đi 400-200 sau đó đến 100 sau đó đến 50 sau đó đến 25. Vì vậy, một lần nữa, có mà cùng một phân chia và chinh phục ý tưởng chúng tôi đã có với danh bạ. Một lần nữa, với sự lặp lại mỗi chúng ta giảm đi một nửa kích thước của vấn đề, chúng ta giảm đi một nửa nó, chúng ta giảm đi một nửa nó. Vì vậy, về mặt lý thuyết, thuật toán của bạn nên đã được nhanh hơn nhiều so với phương pháp tuyến tính của tôi, vì cách tiếp cận của tôi sẽ nói 400 đã thực hiện các bước hoặc có thể nếu tôi là một chút thông minh 200 bước. Tuy nhiên, bạn sẽ đã lấy rất ít, phải 400-200, 100, 50, 25, 13, sáu, vì thế ít hơn mười bước cuối cùng so với 200 hoặc 400 của tôi. Và có vi trùng của một ý tưởng thật sự thú vị. Và có, toán học chỉ là những gì bạn đã làm được cái gì đó là một ít trong tự nhiên lôgarít của hai cơ sở đăng nhập, chúng tôi chia thành hai và hai lần nữa. Và chúng tôi sẽ xem lại sau này trong học kỳ này. Nhưng một lần nữa nằm trong đó thực hiện rất thông minh. Và, chúng tôi đang chỉ scratching mặt của rất thông minh rất thông minh cách tiếp cận hiệu quả cho các vấn đề mà chúng tôi cuối cùng có thể giải quyết. Vì vậy, những người mà bạn chỉ cần trò chuyện với những người nếu một thời gian ngắn? Một mối quan tâm chung trong một khóa học như thế này là tất cả mọi người bên trái của bạn và tất cả mọi người ở bên phải của bạn rõ ràng phải biết nhiều hơn bạn. Vâng, đó là hoàn toàn không vụ án. Và trên thực tế, trong những năm gần đây, khóa học này đã có những nỗ lực để đến với những người kém thoải mái, do đó, để nói chuyện. Và do đó, chúng tôi không có nghĩa là những người đã không bao giờ chạm vào một máy tính trước bởi vì đó là thực sự khó tìm thấy quanh đây những ngày này, nhưng folks người sử dụng email, sử dụng Facebook, thậm chí có thể ngay bây giờ nhưng không nhất thiết phải khá chắc chắn phải làm gì khi họ gặp khó khăn hoặc khi bị hỏi về bất cứ điều gì công nghệ, bạn đã biết, các tay đi lên hoặc loại họ của phần cứng để đẩy một người bạn của những người thông thạo hơn có lẽ ở trong đó hơn họ. Vâng, đây là một số số liệu thống kê từ học kỳ năm ngoái. Vì vậy, khi được hỏi, khi chúng tôi hỏi 400 của chúng tôi để sinh viên năm cuối, bạn đã biết, trình độ của bạn sự thoải mái khi vào lớp này là gì, cũng chính họ đã viết 34% xuống như giữa những người kém thoải mái. Vì vậy, nếu bạn có đi vào phòng này và vẫn suy nghĩ bây giờ, đó, bạn biết thuật ngữ này, những gì mô tả cho tôi ít cảm thấy thoải mái, biết rằng bạn đang ở trong công ty rất tốt. Tuy nhiên, nhận ra quá mà, nếu bạn đang đến trong khóa học này với một nền khoa học máy tính và bạn đã thực sự geek học trung học và trung học những người đã được viết mã và giảng dạy mình ngôn ngữ, cũng đó là tốt quá, vì có chắc chắn là một nontrivial kích thước đối tượng với nền đó là tốt, khoảng 13%, hạn cuối. Và sau đó, có tất cả mọi người khác, sắp xếp của một người không nghĩ rằng họ đang ít thoải mái, họ chắc chắn không nghĩ rằng họ thấy thoải mái hơn nhưng chúng chỉ trong một khóa học để có được một cái gì đó ra khỏi nó. Vì vậy, nhận ra khóa học này hiện thu hút khá phổ của học sinh. Và, để đặt này bằng những thuật ngữ cụ thể, 71% sinh viên, năm ngoái, đã không có các khóa học đằng sau chúng. Vì vậy, nếu bạn đang bước vào khóa học này suy nghĩ oh tất cả những người có CS50 là một whiz khoa học máy tính ở trường trung học, nó không phải là trường hợp. Hầu hết mọi người có lẽ chỉ quan tâm đến nó. Và một số ít, có, hoàn toàn có thực hiện một số các khóa học, một số, hoặc ít nhất là một người năm ngoái đã lấy năm học các khóa học trước đó. Vì vậy, chúng tôi chắc chắn có một số Bên ngoài nhưng một lần nữa thịt của đường cong là những giá trị thấp hơn hoàn toàn. Và một số liệu thống kê thú vị chúng tôi được chia sẻ qua vài năm qua là tỷ lệ giới tính. Vì vậy, lịch sử, ít nhất là trong khoa học máy tính, có một chút của một nghiêng nam nữ. Tôi vài năm trước đây nó đã được nhiều hơn nữa đánh dấu hơn năm ngoái. Vì vậy, chúng tôi gần như ngay bây giờ ở mức 40%. Và nếu tôi có thể ném xuống một gauntlet chỉ vì lợi ích của việc có một biểu đồ pie thứ ba vào năm tới, đó là ngay cả công bằng hơn. Tôi sẽ chỉ ra rằng có, hoàn toàn không có lý do từ quan điểm các khóa học mà nam và nữ không nên đăng ký vào loại hình khóa học. Trong tương đối bằng con số và nhận ra đến 38 phần trăm, 48 phần trăm, chúng tôi đang thực sự rất vui mừng nhận thấy rằng chúng tôi gần như lúc đó, ít nhất, thậm chí giá trị về mặt thống kê là 50%. Vì vậy, nếu bạn là, trên thực tế, phụ nữ, làm phần còn lại đảm bảo quá rằng đây không phải là, trên thực tế, một nam lớp thống trị. Vâng, đây chỉ là như vậy sẽ xảy ra là sinh nhật 20 của CS50. Tôi, cũng cảm ơn bạn. [Cổ vũ] [Vỗ tay] Đó là rất tốt đẹp của bạn bởi vì chúng tôi mang bánh cho bạn thực sự. Và như vậy, khi bạn thoát khỏi đây sau ngày hôm nay, bạn thực sự sẽ nhận được một cơ hội gặp gỡ nhiều người trong số những khóa học giảng dạy fellows những người sẽ được kéo dài trong hành lang. Và có nó sẽ được một loại cách incentivized tốt đẹp của cuộc họp fellows giảng dạy. Tuy nhiên, chúng tôi tham gia một chuyến đi đến một hiệu bánh nhỏ và một lần nữa phù hợp với khóa học là tính chất vui tươi, trong khi dù sao cũng là hy vọng số tiền nontrivial công việc trong khi chúng tôi đang có mà vui vẻ. Tuy nhiên, chúng tôi có một trong các loại bánh cho bạn. [Cười] Vì vậy, nếu bạn đang cười đó là thực sự tốt vì ngay cả khi bạn đang trong một trong những người kém thoải mái ít nhất là bạn đang nhận thức được nó. Những người bạn trong 14 phần trăm có thể thích hương vị này. [Cười] Và sau đó, nếu bạn không biết những gì địa ngục đang xảy ra ngay bây giờ, chúng tôi cũng có việc này cho phần còn lại của bạn. [Cổ vũ] ] Applause [Vì vậy, những người đang được cắt nhỏ thành từng miếng bên ngoài như chúng tôi nói chuyện. Vì vậy, một lần nữa, chúng ta hãy điều lên một notch và ít nhất giới thiệu một số người thuê nhà cơ bản mà chúng tôi sau đó sẽ đưa cho các cấp trong việc còn lại của học kỳ này. Vì vậy, chúng ta đều có thể biết rằng các máy tính cuối cùng bằng cách nào đó để đun sôi xuống số không và những người thân, những việc này được gọi là bit. Điều đó nghĩa là gì? Vâng, bạn có thể nghĩ về nó thẳng thắn như một bóng đèn, một chút là một bóng đèn đó là một trong hai ngày hoặc nó đi. Đó là một chuyển đổi, đó là một trong hai ngày hoặc nó đi. Bây giờ, các nhà khoa học máy tính thường nghĩ ra như là số không tùy tiện và các, và khái niệm của ngày như một. Vì vậy, nếu bạn ném một chuyển đổi ánh sáng trên đó là một trong những tắt nó đi đó là một số không. Hoặc, tương đương, biến ánh sáng trên đó là giá trị thật sự tắt nó đi đó là giá trị false. Vì vậy, đây là những chỉ từ đồng nghĩa. Vào cuối ngày, có, tính toán tất cả, tất cả các công cụ mà đi vào bên dưới mui xe trong một máy tính hiện cuối cùng đun sôi xuống số không và những người thân. Và, khi bạn dừng lại để suy nghĩ về nó, nó đẹp, đập đáng kể những gì thế giới đã thực hiện với những khối xây dựng cơ bản bao gồm một số thiết bị mà bạn đang nắm giữ trong tay của bạn. Vâng, tại sao số không và những người hữu ích? Thiên Chúa của tôi, ngay cả trong thế giới thực chúng ta ít nhất có mười chữ số, số không đến chín. Tại sao để hạn chế? Tốt trong điều kiện phần cứng nó rất dễ dàng. Nó dễ dàng hơn nhiều để đại diện cho hai quốc gia, phải. Nếu máy tính được cắm vào tường, thông thường, bạn có mã nguồn này dễ dàng có tính chất nhị phân. Đó là một trong hai hoặc tắt. Điện được chảy hoặc nó không phải. Vì vậy, đó là loại một trong những lý do ban đầu mà thế giới đã đi với chỉ số không và những người thân trong máy tính. Tuy nhiên, bạn có thể sử dụng chúng như các khối xây dựng. Vì vậy, điều này thực sự là một chút nhỏ trên màn hình ở đây nhưng chúng ta có thể tính trong hệ nhị phân hoặc chúng tôi có thể thể hiện bất cứ điều gì chúng tôi muốn trong hệ nhị phân cũng giống như chúng ta có thể, nói, thập phân, cũng giống như chúng ta có thể, ngay cả trong thực tế, với các chữ cái theo thứ tự abc. Và như vậy, đây là hệ thống nhanh chóng. Trong một thời gian chỉ vài phút bạn sẽ biết làm thế nào để đếm, làm thế nào để viết, làm thế nào để nói chuyện nhị phân giống như máy tính xách tay của riêng bạn. Vâng, bạn có, trong thế giới của phân loại, giống như nhị phân của các cột trường phổ thông hoặc các giá trị. Vì vậy, ở trường lớp chúng ta học đây là những cột này là cột hàng chục, hàng trăm cột và vv. Nói cách khác, tại sao là số chúng ta biết là 123 số 123? Vâng, giáo viên của tôi đã dạy tôi điều này là những cái cột, đây là hàng chục, hàng trăm lần này. Tốt những gì đã làm điều đó nghĩa là gì? Vâng, để tìm ra những gì tổng giá trị là những gì được nếu không thì chuỗi các ký tự số, chỉ cần băm dấu trên diễn đàn. Vâng, chúng tôi có một 100, do đó, đó là 1 lần 100 và sau đó cộng với những gì hai 10's so đó là những 2 lần 10 cộng với ba, vì vậy đó là 3 lần 1, okay, vì vậy tôi có vẻ như đã nhận được trở lại nơi tôi bắt đầu. Tuy nhiên, quá trình này rất đơn giản chỉ là nhân chữ số bằng giá trị của cột này là chính xác những gì nhị phân là tất cả về. Nhưng, trong hệ nhị phân mà bạn sử dụng quyền hạn của hai không quyền hạn của mười. Vì vậy, đây là một loạt các tám bóng đèn. Máy tính nhà khoa học muốn sử dụng các giá trị như hai và tám và 16 và 24 và 32 bởi vì họ đang tất cả các giá trị nói chung thuận tiện để sử dụng. Vì vậy, khi chúng ta nói về tám giá trị trong dãy này giống như được gọi là byte. Và những ngày này chúng tôi ít khi nói chuyện trong byte chỉ, chúng tôi nói chuyện MB gigabyte và terabytes những ngày này. Nhưng đó là tất cả cùng một điều cuối cùng. Dưới đây là tám bit AKA một byte, chỉ cần đơn giản, thuật ngữ. Vì vậy, tất cả các bóng đèn được tắt. Vì vậy, toán học thực sự là rất dễ dàng. Như vậy, có ở bên phải, mặc dù nó nhỏ để xem, là của một cột, các twos, các Fours, các eights, các 16, 32, 64s, 128s. Alright, có thể nó khó để ghi nhớ lúc đầu tiên nhưng nó chỉ là nhân với hai từ phải sang trái. Vì vậy, bạn luôn có thể tái tạo này. Vâng, tất cả chúng ra như vậy đó là 0 lần giữ chỗ, 0 lần giữ chỗ. Vì vậy, đây là số 0 đại diện trong hệ nhị phân. Nói cách khác, làm thế nào để bạn viết số chúng ta biết là 0 trong hệ nhị phân? Vâng, một, hai, ba, bốn, năm, sáu, bảy, tám, và kỹ thuật giống như trong thập phân, tất cả các số không hàng đầu, họ không thêm bất cứ điều gì để công thức họ chỉ có bởi vì chúng tôi tự ý quyết định chúng tôi muốn tám của những việc này trong một hàng, phải. Nếu họ đang đối tượng vật lý, chúng tôi có tám nên họ đã có để tất cả được tắt. Vì vậy, chúng ta có thể vừa nhận được đi với một số không. Vâng làm thế nào để bạn đại diện cho một số? Vâng, theo bản năng bạn sẽ ném một trong những thiết bị chuyển mạch. Bạn sẽ biến một bóng đèn trên. Như vậy, là số một bởi vì chúng tôi bây giờ đặt một một, một bóng đèn đó là ngày, ở vị trí của một. Làm thế nào chúng ta sẽ đại diện cho hai người? Vâng, chúng tôi đang thực sự sẽ ném hai thiết bị chuyển mạch hiện nay ít nhất là so với tình trạng này, chúng ta phải bật cột hai của tắt những cái cột và bây giờ chúng tôi có giá trị của một trong cột twos. Vì vậy, đó là tổng giá trị hai. Bây giờ, một cách nhanh chóng tinh thần tập thể dục, những gì sẽ xảy ra với các trình tự tiếp theo? Làm thế nào để hiện số ba? Vâng, tôi cần một từ cột twos, một trong những từ cột chia thành ba và ha ah. Vì vậy, bây giờ tôi đã tăng lên một. Và bây giờ, cơ bản này lặp đi lặp lại cùng một khuôn mẫu. số bốn là gì? Vâng chúng ta hãy xem, tôi chỉ cần một một trong cột Fours và sau đó số không trong twos và những người thân. Vì vậy, sau đó, nó tiếp tục như vậy. Và, nó chỉ là trình tự các bước này. Và trong khái niệm nhị phân thực sự là không phải tất cả những gì phức tạp. Ở phía trên có chúng tôi có tám số không. Dưới đây mà chúng tôi có bảy và một số không. Dưới đây là chúng ta có sáu số không, một một, và một số không và đó là nhị phân. Now, thankfully, we computer scientists, we programmers by terms end are not going to often be writing in binary, talking in binary, thinking in binary because we've built many layers of the traction on top of that. In fact, people rarely talk about bits except in a networking context they talk about bytes because one bit, not that useful, eight bits these days still not that useful, but at least eight bits, one byte is at least getting us toward more useful units of measure. But, when we start looking underneath the hood, when we do certain problems such as look at files and look perhaps at network traffic, it will become interesting to know how you're representing data because you're going to have to figure out how to display that same information. And, in fact, we, if we only have zeros and ones, how do we go about representing, say alphabetical letters? Well, we're going to have to have some mapping between binary and letters. But that's as of yet unclear. But to hammer this point home and to give me a break from speaking at, I thought I'd pause for a moment and see if we can't recruit eight volunteers, one byte eight people. Can I get eight people for whom it is not too awkward to come on up. good, good one, two, three, four, five, six, seven, eight very enthusiastic eight, come on down. So, you all, for just a moment here, oh and you have to be willing to not be on the internet because there is in fact a camera in the back of this room. So, turn back now if you don't want to be on the, hello mom, in perpetuity. So, let's see, you here will be the 128th column. And let me ask that you simply hold this before you. And actually, if you could scooch this way just a little bit, then I will get out of your way. You'll be the 64's column, you shall be the 32's column and the 16's. 32's, 16s, 8's, 4's, 2's and 1's. All right. So perfectly lined up with the place holders from before, but we need a little bit of mapping, so a quick set up. We just need an arbitrary way of mapping binary numbers, which really could be converted very easily to decimal numbers. So we need a way of converting numbers to letters if our computers are actually going to show us emails or type URL's or actually display non numeric information. And, in fact, there is a system for that, it's called ASCII, an acronym whose meaning is not so interesting, but whose utility is. This is just a mapping from letters to numbers and there's actually a lot more numbers on the screen, and you guys, don't worry, aren't going to have to test yourselves with this in just a moment. But there's a mapping between numbers and letters and I'm just going to get us started by pointing out a couple of these. The numbers of interest right now are going to be, whoops, are going to be this. Whoops. So in this column here, I can't seem to zoom in simultaneously, we have decimal. Dec for decimal. And then we have the character on the right hand side. So if I hop over into this column, thought it's a bit small on the screen, the number 65 represents what letter? Capital A. And the number 97? Lowercase A. All right. So those two alone, right, so do not go home and try to remember ASCII chart. Come quiz time, do not try memorizing an ASCII chart. Memorize two, 65 is capital A and 97 is lowercase A. And from there you can bootstrap yourself to all of the other alphabetical characters. But all this chart says, and I just downloaded this chart from ASCIItable.com, this is a standard that's been around for many, many, many years, but most computers still use it. What we now have is a means of encoding alphabetical information using what's ultimately numeric. So if these guys are just switches, light bulbs, computers, we can actually convey messages. So each of you has some hints on the back. We're going to have three rounds here where these guys are going to spell out in English, in ASCII, a very short message, a three letter word. It will involve them either raising their hand, thereby representing a one or just standing there awkwardly, thereby representing a zero. So why don't we proceed immediately with round one and you can either raise or not raise your hands. So the audience doesn't get off the hook. What number are they currently representing? 66. Right. Not hard because we have a one, a hand up in the 64s column, a hand up in the 2's column. 64 times one plus two times one is 66. They're representing the number 6, which means the first letter is B. So not too bad, right? Round two. First letter was a B. [Cười] >> Seventy Nine. >> David: Can someone second that? Yes. All right. So 79, which means it's now an O. So B,O. There's a third letter. Actually that is kind of, yeah. Third round. Third and final round. What number is this? I heard an 87. Someone else agree? All right, yeah. This is in fact 87, which maps to, and this is a very clever set up at which point you all B, O, W, it's bow. Very good. So actually besides that little souvenir, that was not a very enthusiastic applause, so I'll take care of you. So we do have a little something for these guys here now that they just appeared on center stage doing perhaps the geekiest thing they could. So maybe if we could humor them if only because I'm feeling a little bit awkward now. A little round of applause for these guys here. [ Applause ] All yours. All right. Thank you very much. So, so, it turns out that we can take this one step further, but you are now entering a community of people who understand things like this. [ Silence ] It's slowly spreading, yes? [ Laughter ] It's not cool that you understand this now. So we've already done some damage here today, but yes, there is now such a thing as geek humor that you might just catch a little bit more on to. So what are we going to do throughout this semester? So there's 12 weeks, zero index, so 13 weeks in total. You'll find throughout the semester that computer scientists tend to count starting from zero for reasons that will soon become clear. But what we're going to do this week, starting this Friday, is introduce you to programming. Now you may already be coming at this course with a background in the same, and that's perfectly fine, but we'll also be able to introduce some more sophisticated topics than are typically covered, things like events and threading, so just to toss out a couple of buzz words for those unfamiliar. But what we're going to do is not dive into what the typically traditional language like Java or C++ or C sharp catch phrases that you might have heard in the past, but we're going to use a programming environment, a graphical programming environment that was actually developed by MIT's media lab. And this is an environment that allows you to program, quite literally, by dragging and dropping puzzle pieces that fit together logically that lets you implement these things called loops and conditions and Boolean expressions and you can actually, on day one, after this Friday, write a program that actually some of your friends might care about. So in yester year, say when you've taken a computer science course in high school, odds are one of your first programs was the equivalent of hello world, like wow mom, I just made the computer type some characters on the screen. It's a very underwhelming experience. Much more interesting is it to implement a little something like this, as one of last year's students did. So I give you the work of a former classmate. It's a love story, of sorts, about dancing cookies. [ Music ] So this was actually from a student who had never programmed before. And just to give you a teaser of this interface, and we're only going to use this for one week time, really to get the comfort levels up and to really get folks excited about what you can actually make these machines do, this is an environment where you'll be programming by, for at least a week, just dragging and dropping puzzle pieces that fit together, as we'll see, in a logical fashion. And it lets you do fun, silly things quickly. And for any of you who are a little bit familiar with things like Java and C++, it's usually a good semester or two or three before you finally get to start writing something that another person might actually enjoy watching. Well, in week one of the course, or the second week, zero index, where we dive into a little more traditional environment. In this course we'll spend much of our time on a language called C. This is one of the earliest languages that, unlike Java, actually gives us much greater access for better or for worse, to manipulating hardware and actual memory, and we can do a lot of damage with that. In fact, any time you read of web servers being exploited or computers being hacked into, very often to this day it's the result of people having run software in a language called C or C++ without sufficient care given to what are called buffer overruns or lengths of arrays, so some fairly technical concepts that are not that hard to understand, but there's been a lot of humans making a lot of mistakes for years and with this language we'll actually understand some of those security implications. But each week, typically, we'll introduce also an interesting domain that will inspire that week's problem set. So we'll also take a look this week at the field of cryptology, cryptanalysis, the notion that you can encipher information in such a way that people can't read your messages, but if clever enough perhaps you can, in fact, crack what are otherwise secret messages. In week three we'll then look at some basic fundamentals of computer science like searching and sorting and we'll actually look at this notion of recursion, how to debug things. In short, we'll take things up to the level of problem solving and not so much about mere syntax and implementing short little cookie cutter programs. In week four we'll introduce more sophisticated problems still. What does it mean to manage memory? What does it mean to run out of memory? What does it mean to actually segfault, if you've heard this expression, and odds are you haven't, but very bad things happen and frankly by terms end you'll understand terms like my code segfaulted which actually is generally not going to be a good thing. But then again, we'll introduce some domain specific stuff. So actually one of my internships during graduate school was to work for the local Middlesex County District Attorney's office doing forensic investigations in a digital sense. The local Mass state police would bring to our office hard drives and floppy disks and sometimes for no reason mice and keyboards. And we would be tasked with finding evidence. Now it turns out, maybe just an FYI, that the criminals in Cambridge, Massachusetts, at least, not necessarily that clever. Very often our forensic analysis boiled down to booting the computer up and double clicking on the My Documents folder, and therein laid the evidence. But what we'll do this week is give you a sense of what it actually means to store information on a hard drive, on a flash drive, and why can't otherwise private information be disclosed to third parties when you drop off a computer to be repaired or even when you discard it. Well someone might very well be sifting through those hard drives and it's really not that hard to find data if you know how to look for it. Well, in week five we'll look at more sophisticated data structures, tools and techniques that you can use ala phone books and ala searching huge data sets much more intelligently. And the week's problem set will task you competitively to see just how fast the code you can write is and how little memory you can use. Toward terms end though we'll take things up to a higher level in terms of programming languages and put C behind us and introduce a web programming language known as PHP, one of the popular languages these days. Much of Facebook is still written in PHP, at least outward facing, and it's just a very easy language to learn quickly once you already know another. So with PHP we'll be able to solve problems and implement websites that do interesting things. The news site I showed you, the events site, the shuttle boy site, all of those all happen to be written in PHP. But by no means is that prerequisite. What you'll also find throughout this course is that you're not going to exit this course knowing C. You're not going to exit this course knowing PHP. Those are not interesting skills to claim, but knowing how to program, knowing how to use data structures and algorithms in an interesting way, that's a compelling story. Even I, all these years later, throughout college and graduate school, the only time I ever learned a language was probably in CS50 where it was still taught in C and CS51, which is one of the successor courses. Everywhere along the way since has been go learn this language and then work on this problem set because computer science is not supposed to be about here's a language, let's spend seven weeks teaching you where the semi colons are. There are much more interesting ideas out there. Databases, for one. And in week two we'll introduce you to this query language called SQL that'll allow you to store information in databases and actually implement some fairly interesting final projects. The week after we'll look at what's called client side programming, doing interesting things on a user's computer, taking advantage of their CPU cycles, doing things ala Google maps and these websites that actually use JavaScript, which is actually a language we'll introduce to let you do client side things, make more interesting, more sophisticated user interfaces, but at the end of the day have to be really mindful when implemented of a lot of sticky issues like network speeds, network performance and security. So it's not about again just coding something up that's fun to use or pretty to look at, but actually thinking about the design that'll be the interesting process. And then, the end result aesthetically will often be a really neat toy to show yourself or a friend. And then we'll look at hardware. We're going to take for granted that there are these physical boxes throughout much of the semester that will do what we tell them to do. But how are they doing that. So we'll actually take a peak under the hood and talk about what a compiler really is, what a CPU really is and actually consider what's making all of this fanciness from stupid YouTube videos on down possible. So what are the expectations? Attending lectures and sessions, completing nine problem sets assigned roughly weekly, two quizzes, the final project and there is in fact no final exam. Grades, it's always a question, broken down as follows here. You can take the course pass-fail. But let me say it here, and I've said it many times. I personally care relatively little about grades. I think they are a wonderful, well, they are a useful pedagogical tool with which to motivate and unfortunately sometimes de-motivate, but you'll find in this course that at the end of the day it's more about seeing how far you can go from weeks zero to week 12, as we say in the syllabus than it is about absolutely ranking all students in this course. So if you're coming into this course among those less comfortable, though a large demographic do not assume that that's automatically putting you in the lower third of the so called distribution. At terms end do I sit down with the TF's and discuss each and every one of the students. We take into account where a student came from, what kind of trajectory they were actually on and so at the end of the day please focus more on, and I don't mean to sound too grand, the process of learning and less on the numeric's. And you'll actually see that we grade problem sets, in particular, very coarsely, whereby along three axis, you will get a score of 1, 2, 3, 4, or 5, where 3, is in fact good. 3 is not C. 3 is good, 4 is better, 5 is best. But more on that as the problem sets are released. So the course's website is where you will find, as in most cases, a whole lot of useful things, if not silly things, too. And we have the luxury, as computer scientists of implementing it ourselves. So over the course of the semester you will see various new features rolling out. You'll find out over the course of the semester that the bulletin board is a wonderful place, certainly in the course of this size, to turn when you have questions about the problem set, questions about some computer science concept. You'll be able to check your grades, download all handouts in advance of lecture typically will I post the slides, if you're the type who wants to scribble on notes. But as you've seen, usually I shy away from long lists of details and more like pictures of cats and other visual cues. So you'll find, too, that we will provide printouts of code when we actually think it particularly advantageous to write right on the paper. Software, videos will be available, usually around 1 to 2 to 3 days maximally after each lecture. So the courses are being filmed and every lecture will go online in various formats including QuickTime and MP3's for downloads to iPods and such. And also you will find a link to download what we call the virtual terminal room, which as you'll see is related to virtual office hours. Books are expensive and in the computer world also not that useful. They are on the shelves of the coop, although we're told that last year they ordered like 120 books for the course and 30 were actually purchased, but this perhaps speak to the fact that there are places like Amazon.com, so if you are the type who actually enjoys the sort of support structure that a book provides, if you like to read up more than say a course's typical materials offer, by all means, procure one or more of the books that we recommend here and discuss more in detail in the syllabus. But realize there are so many resources that this course provides in printed form and electronic form, and my God, there's the whole internet out there. Books are not something that are required for this particular course. Lectures, in general, will be Monday's and Wednesday's, except for this Friday and next Friday, simply because of shopping period and Labor Day. So we'll meet this Friday, next Wednesday, next Friday, but there after this is just a Monday, Wednesday course. So this little visual cue here is to remind me that yes, we do distribute videos in QuickTime formats, MP3's, fun ways that you can, if you're actually this type, maybe in the 14 percent, watch a computer science lecture on your iPod, but it reminded me that at terms end last year, the course culminates in final projects, in which students can design most anything they want, and we actually had some students tackle some iPhone applications. Some one of these at least is now in the Apple store. It's called Rover. It's been adopted essentially by Harvard agencies and it's the iPhone version of the unofficial guide to life at Harvard. They did a brilliant job. I bring this slide up too, just to point out what other technologies might very well be down the road. Some of you may have seen this before, but just to give you a teaser of apparently what's in the pipeline, I thought I would offer this brief distraction here. [Music] >> With the MacBook wheel, Apple has replaced the keyboard with a sleek, touch sensitive click wheel. Apple CEO Steve Jobs introduced the product yesterday at the annual Mac Expo. Senior product innovator says the MacBook wheel will make typing a thing of the past. >> At Apple our philosophy is create products that are simple to use and nothing's more simple than a single giant button. >> Gilman showed me how the revolutionary new computer works. >> Gilman: Just open the intuit-type alphabet menu here, scroll to the letter you need and center click to select it and click again to capitalize and repeat this process for each new letter. It couldn't be simpler. You could also let the predictive sentence technology complete the sentence for you. >> Gilman says the MacBook wheel has also simplified organization of files, so searching your hard drive will be a snap. >> Gilman: Just press both sides of the wheel concurrently and center click and there, you have an alphabetical list of every file on your hard drive. Everything is just a few hundred clicks away. >> Apple is calling the MacBook wheel the most intuitive product every designed. >> Here at Apple we like to think that we're giving customers features they don't even know they want yet. >> While the MacBook wheel won't hit the shelves for another 3 to 15 months, many apple users already have it on their wish list. >> I'll buy almost anything [inaudible] and made by Apple. >> Alex [inaudible] was one of the lucky few to get to try out a MacWheel and spent 45 minutes typing an email to his friend. >> I never really realized how much I hated keyboards until I saw this thing. >> I like how it automatically says, sent with a MacBook Wheel, so people automatically know you have one. >> With a price tag of just under 2600 dollars for the lowest end MacBook Wheel, it is an investment. But the super thin laptop features numerous innovations, like the new ultra thin hummingbird battery, which can power the MacBook Wheel for a fill 19 minutes before needing to be recharged and the computer is virtually unbreakable unless dropped or hit. But Apple isn't resting on its laurels, Bryan Gilman says they're already hard at work on the next generation of the MacBook Wheel, which will be four ounces lighter due to its lack of streaming hard drive or wheel. For the Ugly news Network, I'm Jeff Tate. >> Thank you for that, Jeff. It remains to be seen if the wheel will catch on in the business world where people use computers for actual work and not just dicking around. Moving on, police warn. >> David: So I've seen that thing at least a half a dozen times now, including once at like two a.m. last night and I was scrolling down on YouTube and literally like an hour prior, some guy in all seriousness posted, just a wheel? That's the stupidest product I've ever seen. [ Laughter ] And then the rants ensued in the thread thereafter. So besides lectures there are also sections and it is your teaching fellow and the course's course assistants that you will get to know very well over the course of this semester. Sectioning won't begin for a week or so's time. More on that in the lectures to come. But know that the course will have several different tracks of sections, much like First Knight's has for music. Sections targeted more at those less comfortable, those more comfortable and those somewhere in between. And we also offer most Sunday nights before a problem set is due on the following Friday is what we call code walkthrough's where one of the course's teaching fellows will lead a session targeted specifically at the week's problem set and will help you answer the question where do I begin, how should I approach this? And that too will be filmed and made available online and always linked on the course's website. So this course has a huge staff. Our staff is larger than Harvard's average class size. We have over 50 people involved in the production of this course on a weekly basis. Some of them teaching fellows who hold sections, grade work, hold office hours and more. Course assistants who are former students, who are offering on a volunteer basis in fact multiple hours of office hours in the computer lab per week. System administrators, folks doing all of our AV and video production. Someone who will actually be taking notes for you. So it is actually my opinion that scribbling down almost every word that someone like me says is not a very good use of one's time. It's much more interesting I think to actually engage with what's on the screen, what's being presented. And so what we will do as a course is post PDF's online within a couple of days of lectures of scribe notes, which is essentially an authoritative version of course notes, unedited, but documenting what went on in lecture that day, thereby hopefully freeing your minds and pencils from jotting information down. We have some of our team here. Most of our team is actually shopping courses. But if a few of your guys would like to come on stage for a moment with our head teaching fellow and assistant head teaching fellow. Allow me to ask the latter to say a quick hello. And as these guys come up in absentia allow me to say that also on staff this year besides the folks you see here are Alex, Alice, Andrew, Batul, Charlotte, Chris, Dan, Dan, Daniel, David, David, David, Derek, Dev, Didi, Doug, Drew, Erica, Fil, Glen, Greg, Janice, Jason, Jean, Jeff, Jesse, John, John, Jonathan, Jordan, Josh, Karim, Kelly, Ken, Kent, Kyu Bok, Lee, Madhura, Marta, Matthew, Michael, Michelle, Mike, Mike, Nathan, Patrick, Peter, Peyton, Rose, Saba, Sanjay, Shannon, Stacey, Ted, Wellie, Yair and me. So our course is teaching fellows and course assistants, Cansu and Yuhki, would you like to say a quick hello? >> Hi. It's definitely a great honor to be back here for the third time. And if you're one of those who are like less comfortable. [ Laughter ] I think I can [inaudible]. Okay. [ Laughter ] If you're one of those [inaudible]. There's no need to be afraid. I walked in here two years ago with no experience what so ever, and I thought that I was like dumb and I was sure that I was going to fail the class. And I came back for the third time. I did not fail the class. This course is great because it has such a good community. As you can tell by the names listed by David. All the CA's and TF's are here to help you. So if you have any questions at all, just come up to us. Not taking this class because it's hard is not a good excuse. So, hi. >> [Inaudible]. >> Hi, so well both as a student and TF, I've really enjoyed being a part of this course. And even though it's a course that requires a lot of work from you, we've put a lot of work in to it for you as well to make it as enjoyable and as fun as possible. So, we really hope that all of you stay and take part in this very special experience. >> Thanks. >> David: So you will find, thank you, all of you, you will meet them in the hallway in just a few minutes as well. So you'll find that this course, perhaps more so than many is very much a shared experience. This is not a competitive course. This is not your premed course. This is a course which ultimately yes is about doing independent work, as you'll see each week by way of the problem sets. But you can't help but to get close to someone when you're fighting with some bug and banging your head against the computer screen proverbially to try to track down some bug. And I think you'll find that past students will concur that you exit this course with a lot of friends among students and also on staff. So where does that happen? Well, within office hours in the basement of the science center there's some large computer labs and we pretty much take them over five nights a week. These won't start for some time, and this, to be honest, is perhaps the most beautiful picture of the science center I've ever seen. [ Laughter ] It does not look like that on the inside. But it is a place where a good percentage of students do choose to spend time to get one on one assistance with each of the week's problem sets. Each week we will offer more than 100 hours of assistance one on one in the science center per the schedule that will eventually go online. And for those of you who live, say in the quad, or in Mather, or who just don't want to trek all the way to the science center to ask that quick question, we also offer what are called virtual office hours, much like remote technical support where you'll be able to log into a glorified chat room, in which yes, you can type back and forth with a TF or a CA, but you can also share your screen or share control of your mouse with them subject to your consent so that they can help you troubleshoot any problem or any question you have remotely. To give you a sense of what's involved in the course, these are statistics from last year. So you will, I think it's quite fair to say, work your ass off in this course. But per my promise from the start, this is one of those experiences that I don't think a typical student regrets. If you flip through, for instance, the Q Guide forms that are all on the course's website, you'll find that only by putting in the time to a course like this do you really exit having felt like you got something out of it and frankly might very well even have emerged even smarter. So what does it mean to actually write programs and implement problem sets? Well, the first problem set last year, a quick retrospective here, was to implement your very own programming scratch. And we spend just the first week there, and the goal is to implement your own game or animation or art or anything that appeals to you. In week one, then do you implement some basic C programs to get acclimated to some more traditional programming environments at the command line, at Linux so you get comfortable with some of these basics that will certainly serve you well in the long run. Last year's Problem Set 2 was about cryptography. We gave students the opportunity to implement some ciphers, some algorithms that let them encrypt information. And we also offered some students the opportunity to do the opposite. Each problem set, many problem sets, as you'll see are implemented in two editions. A standard edition that we expect almost everyone to do, say 90 percent of the class. And then a hacker edition, which presents the material from a more sophisticated angle, expects perhaps a bit more clever work for those more experienced, and for this one did those students get handed in the hacker edition pre existing user names and passwords in encrypted form and they had to figure out what those passwords for. We actually got into trouble for this a few years ago because all of the sudden FAS Computer Services saw like 50 people running a crack program on nice.fas.Harvard.edu, so they now have been given a heads up for programs like that. Last year students implemented the game of 15. Not all that much fun to play as a party favorite, moving the numbers up down, left, right, but a real stepping stone to implementing something interactive that involves a human and the hacker edition for this one had students implementing God mode, which actually solved this thing for the human, maybe cheat mode is the more apt term, in Sudoku, which was a step up toward that, where we provided the students, you, with a framework with a whole bunch of code that you needed to first understand before taking things the final mile and implementing some of the remaining functionality. And then we dabbled in forensics and this grew out of a real world experience between me and a friend. For this problem set last year, this buddy and I, who he being a particularly good photographer, strolled around campus and we shot photographs of unique, non obvious, but identifiable places on campus. And this was using his digital camera. All of these JPEGs got stored on a digital flash card or what not. And then I accidentally formatting the thing, or erased it. Well, it turns out formatting something or erasing something, usually means neither. It just means doing a little bit of work to make the human think their data has been erased, when in reality it hasn't. It's just been forgotten. And so we tasked last year's students with writing a program in C to actually recover these photos for my friend. We gave everyone a forensic image, so to speak, a big file representing that compact flash card, and they had to recover the several dozen photographs. And they also had to solve this little murder mystery. We provided folks with this image here. Those of you who've seen this before might be doing that squinting thing right now where you're trying to look through the picture, well you look pretty awkward, because this is not a magic eye puzzle. This is just random red noise that actually has behind it an actual message. And it turns out, I think it was Colonel, let's see, I've got my little solution here. Last year it was Colonel Mustard in the study with the candlestick. And this was the murder message recovered by students who wrote code to do so. And then in Problem Set 6 last year. We challenged students with implementing the fastest spell checker possible. What do we mean by that? Well, we handed the students a big text file containing 140 plus thousand English words, and we said write a program that loads all of these words into memory, but very quickly and very efficiently can tell us yea or nay, is this document perfectly spelled or are there errors? And what we provided was a testing framework, a harness, that students, if they wanted to compete, could run their code against some benchmarks, against some testing programs that we wrote. And then, ranked on the course's website from fastest to slowest were the running times, the amount of time it took for each student's code to actually execute, complete opt in. It's by no means required. And we took a bullet for the team and made sure that one of our own teaching fellows intentionally, I think, was at the very bottom of the list. So, there was definitely a lower bound. But the odd, the funny thing was we saw this in the cue guide evaluation, this problem set of all things, was apparently the one that people sunk the most time into. Not because it took any longer than all the other p sets, but they would come back from like dinner, look at the board, and realize dam my friend, my roommate just ever so slightly inch higher than me and so it incentivized people if only to one up their friends and roommates. In Problem Set 7, last year, we asked students to implement their own E*Trade like website, whereby you had to create a website using that language call PHP a database called mysql that actually lets people log in and then manage a portfolio of stocks, buy stocks quote unquote, sell stocks quote unquote, get stock quotes. And from where? Well, we have the students; we had the student patch into Yahoo Finance where they grabbed merely the Real time stock quotes to actually simulate the process of buying and trading stocks. Unfortunately some students, perhaps some economics majors or just folks with too much free time figured out last year how to gain the system. So, even though we gave everyone 10,000 virtual dollars, I think our winner turned teaching fellow this year actually, right don't push them away make them one of your own, for a billion dollars something like that ridiculous. Turns out we weren't really checking whether or not people were trading after hours. And it turns out that also, Yahoo stalk quotes are not in fact perfectly Real time which means if you just have a real E*Trade account you can see the future and see where the stocks are going. [ Laughter ] So, apparently you can exploit that if you put your mind to it. and then, in Problem Set 8, the course's final problem set last year, we had students implement a mash up where they take Google News and Google Maps and mash them together using JavaScript, PHP and SQL in such a way that they had a website that they could find all of the local news from whether it's zip code 02138 or 90210. And, you would actually pull the local current even articles by this thing called XML and integrate it into the view of a Google Map. And then, at very course's end was the true climax of the course. This course culminates in final projects, which ultimately will be your opportunity to design your very own piece of software, designed by you or two or three friends. And the course then climaxes with the new and improved, with the second annual computer science 50 fair which last year was an exhibition across the street in one of the engineering buildings with 300 laptops atop tables, popcorn was popping, music was playing, stress balls with CS50's logo were being thrown around. And this was an opportunity for our 300 plus students to exhibit their final projects not only to each other but also to some 900 attendees in total. And we also invited some recruiters as well. So, that is what you have to look forward in this course. You also have cake to look forward to in the hallway. This is CS50 and we'll see you on Friday. [Vỗ tay] ==== Transcribed by Automatic Sync Technologies ====