EVOLUTION-MANAGER
Edit File: lessons.json
{ "title": "C Programming for Everybody (CC4E)", "description" : "Hello and welcome to my site where you learn computer architecture and the history of computing by studying C.", "count": true, "required_modules": [ "https://github.com/tsugitools/gift", "https://github.com/tsugitools/youtube", "https://github.com/tsugitools/peer-grade", "https://github.com/tsugitools/tdiscus" ], "discussions" : [ { "title" : "Welcome to C Programming for Everybody", "launch" : "mod/tdiscus/", "resource_link_id": "discussion_welcome" }, { "title" : "Report Bugs in Course Material", "launch" : "mod/tdiscus/", "resource_link_id": "discussion_bugs" }, { "title" : "Problems in the Code Screen", "launch" : "mod/tdiscus/", "resource_link_id": "discussion_code" } ], "modules": [ { "title": "Historical Context", "anchor": "history", "icon" : "fa-microchip", "description": "We place the moment this book was published (1978) in the context of the history of computer hardware, operating systems, and programming languages to better understand why C (and UNIX) had such a transformative effect on computing when this book introduced it to mainstream audience. There are a lot of video references - you don't have to watch them all.", "slides": "{apphome}/lectures/CC-01-History.pptx", "videos" : [ { "title" : "A History of C, UNIX, and Computation before and after 1978", "youtube" : "VZ2N0MuAUGA" }, { "title" : "Chapter 0 - Introduction (Video)", "youtube" : "XSEGkAOxKZ4" } ], "references" : [ { "title" : "Chapter 0: Introduction (html)", "href" : "{apphome}/book/chap00.md" }, { "title" : "Course: Internet History, Technology, and Security (IHTS)" , "href" : "https://ihts.pr4e.com/" }, { "title" : "Article: When Women Stopped Coding (NPR)" , "href" : "https://www.npr.org/sections/money/2014/10/21/357629765/when-women-stopped-coding" }, { "title" : "Book: Unlocking the Clubhouse: Women in Computing" , "href" : "https://amzn.to/3bsnpJ4" }, { "title" : "Oral History: Helen Spence" , "href" : "https://onthebanks.msu.edu/sohp/Object/158-545-297/helen-spence/" }, { "title" : "Video: Alan Turing at Bletchley Park" , "href" : "https://www.youtube.com/watch?v=5nK_ft0Lf1s&list=PL4660FB7F523B1770&" }, { "title" : "Video: Gordon Bell on the Building Blocks of Computing (PDP-1)" , "href" : "https://www.youtube.com/watch?v=8skBtQS-VVE&list=PL4660FB7F523B1770&t=483" }, { "title" : "Video: The Monash Museum of Computing History" , "href" : "https://www.youtube.com/watch?v=o7_dQbKPG_Q&list=PL4660FB7F523B1770&index=8" }, { "title" : "Video: Computer History Museum" , "href" : "https://www.youtube.com/watch?v=poh9ROv_LR8&list=PL4660FB7F523B1770&index=8" }, { "title" : "Video: The Living Computer Museum" , "href" : "https://www.youtube.com/watch?v=ZHU4nzIsaIM&list=PL4660FB7F523B1770&index=8" }, { "title" : "Video: Resurrecting the CDC 6500 Supercomputer" , "href" : "https://www.youtube.com/watch?v=wDc1630krls&list=PL4660FB7F523B1770&index=8" }, { "title" : "Video: Making Computers Easier To Use -- AT&T Archives film from 1982, Bell Laboratories " , "href" : "https://www.youtube.com/watch?v=XvDZLjaCJuw" }, { "title" : "Video Archive: AT&T Archives", "href" : "https://techchannel.att.com/showpage/ATT-Archives" }, { "title" : "Web Site: The Faces of Open Source - UNIX" , "href" : "https://www.facesofopensource.com/unix/" }, { "title" : "Video: Niklaus Wirth on Teaching Computer Science", "href" : "https://www.youtube.com/watch?v=BJIqHIYSDrk&list=PL4660FB7F523B1770" }, { "title" : "Web Site: Untold History of AI: Invisible Women Programmed America's First Electronic Computer" , "href" : "https://spectrum.ieee.org/untold-history-of-ai-invisible-woman-programmed-americas-first-electronic-computer" }, { "title" : "Video: Andrew S. Tanenbaum: The Impact of MINIX", "href" : "https://www.youtube.com/watch?v=86_BkFsb4eI&list=PL4660FB7F523B1770" }, { "title" : "Video: Larry Smarr - The History of Supercomputing Research", "href" : "https://www.youtube.com/watch?v=-PlfGwWFwyo&list=PL4660FB7F523B1770" }, { "title" : "Video: Guido van Rossum: The Early Years of Python", "href" : "https://www.youtube.com/watch?v=xLVxoz-mQFs&list=PL4660FB7F523B1770" }, { "title" : "Video: 'C' Programming Language: Brian Kernighan (from Computerphile)", "href" : "https://youtu.be/de2Hsvxaf8M" }, { "title" : "Video: Bjarne Stroustrup - C++", "href" : "https://www.youtube.com/watch?v=fOJ2CntgRNI&list=PL4660FB7F523B1770" }, { "title" : "Video: Rasmus Lerdorf Interview on Creating PHP", "href" : "https://www.youtube.com/watch?v=YIGRXEzjE6c&list=PL4660FB7F523B1770" }, { "title" : "Video: Brendan Eich: Creating JavaScript", "href" : "https://www.youtube.com/watch?v=iIPxQ9kEaF8c&list=PL4660FB7F523B1770" }, { "title" : "Video: Massimo Banzi: Building Arduino", "href" : "https://www.youtube.com/watch?v=0VAbvQ2Ti50&list=PL4660FB7F523B1770" }, { "title" : "Video: Eben Upton on the Raspberry Pi", "href" : "https://www.youtube.com/watch?v=P5KEiuTT_E8&list=PL4660FB7F523B1770" }, { "title" : "Article: Alan Turing at Bletchley Park ", "href" : "{apphome}/papers/2012-06-Bletchley-Turing-c-IEEE.pdf" }, { "title" : "Article: Gordon Bell on the Building Blocks of Computing (PDP-1)" , "href" : "{apphome}/papers/2013-05-Gordon-Bell-Copyright-IEEE.pdf" }, { "title" : "Article: The Monash Museum of Computing History" , "href" : "{apphome}/papers/2012-03-Monash-Copyright-IEEE.pdf" }, { "title" : "Article: Computer History Museum" , "href" : "{apphome}/papers/2013-09-John-Hollar-History-IEEE.pdf" }, { "title" : "Article: Living Computer Museum" , "href" : "{apphome}/papers/2016-06-Living-Copyright-IEEE.pdf" }, { "title" : "Article: Resurrecting the CDC 6500 Supercomputer" , "href" : "{apphome}/papers/2016-06-CDC-6500-Copyright-IEEE.pdf" }, { "title" : "Article: Niklaus Wirth on Teaching Computer Science" , "href" : "{apphome}/papers/2012-Niklaus-Wirth-Copyright-IEEE.pdf" }, { "title" : "Article: Andrew S. Tanenbaum: The Impact of MINIX" , "href" : "{apphome}/papers/2014-07-AST-Minix-Copyright-IEEE.pdf" }, { "title" : "Article: Guido van Rossum: The Early Years of Python" , "href" : "{apphome}/papers/2015-05-Guido-Early-Years-Python-IEEE.pdf" }, { "title" : "Article: Massimo Banzi: Building Arduino" , "href" : "{apphome}/papers/2014-01-Massimo-Banzi-Copyright-IEEE.pdf" }, { "title" : "Article: Eben Upton on the Raspberry Pi" , "href" : "{apphome}/papers/2013-10-Eben-Upton-Copyright-IEEE.pdf" }, { "title" : "'C' Programming Language: Brian Kernighan (from Computerphile)", "href" : "https://youtu.be/de2Hsvxaf8M" }, { "title" : "Audio version of the book", "href" : "https://audio.cc4e.com/" }, { "title" : "Brian W. Kernighan's web site for the 1988 version of the C Programming Language book", "href" : "https://www.cs.princeton.edu/~bwk/cbook.html" }, { "title" : "Best Programming Course Ever? (Interview)", "hrefx" : "https://youtu.be/aQ_XTBmCXS8" } ], "lti" : [ { "title" : "Quiz: History", "launch" : "mod/gift/?quiz=cc-01.txt", "resource_link_id" : "cc_01_quiz" }, { "title" : "Quiz: Introduction", "launch" : "mod/gift/?quiz=cc-00.txt", "resource_link_id" : "cc_00_quiz" } ], "discussions" : [ { "title" : "History", "launch" : "mod/tdiscus/", "resource_link_id": "discuss_00_history" } ] }, { "title": "From Python to C", "anchor": "python", "icon" : "fa-university", "description": "To quickly get up to speed with C, we translate some Python code to C and compare and contrast the two languages. This course assumes you know at least Python and hopefully passing understanding of JavaScript and maybe even PHP, so the overall C syntax should not be 100% new to you.", "slides": "{apphome}/lectures/CC-02-Python.pptx", "references" : [ { "title" : "Chapter 1: A Tutorial Introduction (html)", "href" : "{apphome}/book/chap01.md" }, { "title" : "Endianness Explained With an Egg - Computerphile", "href" : "https://www.youtube.com/watch?v=NcaiHcBvDR4" }, { "title" : " Arrays vs Linked Lists - Computerphile", "href" : "https://www.youtube.com/watch?v=DyG9S9nAlUM" }, { "title" : "Audio version of the book", "href" : "https://audio.cc4e.com/" } ], "videos" : [ { "title" : "From Python to C - The Rosetta Stone Lecture", "youtube" : "tLb4kukvc7Q" } ], "lti" : [ { "title" : "Autograder: Write Hello World", "launch" : "tools/ccauto/", "resource_link_id": "cc4e_00_hello", "custom" : [ { "key": "exercise", "value": "1-01-hello.php" } ] }, { "title" : "Exercise RS-1: Produce output", "launch" : "tools/ccauto/", "resource_link_id": "rs_01_output", "custom" : [ { "key": "exercise", "value": "rs-01-output.php" } ] }, { "title" : "Exercise RS-2: Read Input", "launch" : "tools/ccauto/", "resource_link_id": "rs_02_input", "custom" : [ { "key": "exercise", "value": "rs-02-input.php" } ] }, { "title" : "Exercise RS-3: Input / Output", "launch" : "tools/ccauto/", "resource_link_id": "rs_03_io", "custom" : [ { "key": "exercise", "value": "rs-03-io.php" } ] }, { "title" : "Exercise RS-4: Reading Lines of Input", "launch" : "tools/ccauto/", "resource_link_id": "rs_04_line", "custom" : [ { "key": "exercise", "value": "rs-04-line.php" } ] }, { "title" : "Exercise RS-5: Reading Lines of Input with gets()", "launch" : "tools/ccauto/", "resource_link_id": "rs_05_gets", "custom" : [ { "key": "exercise", "value": "rs-05-gets.php" } ] }, { "title" : "Exercise RS-6: Write a simple for loop", "launch" : "tools/ccauto/", "resource_link_id": "rs_06_for", "custom" : [ { "key": "exercise", "value": "rs-06-for.php" } ] }, { "title" : "Exercise RS-7: Compute Minimum and Maximum", "launch" : "tools/ccauto/", "resource_link_id": "rs_07_minmax", "custom" : [ { "key": "exercise", "value": "rs-07-minmax.php" } ] }, { "title" : "Exercise RS-8: Write a Guessing Game", "launch" : "tools/ccauto/", "resource_link_id": "rs_08_guess", "custom" : [ { "key": "exercise", "value": "rs-08-guess.php" } ] }, { "title" : "Exercise RS-9: Write a Function", "launch" : "tools/ccauto/", "resource_link_id": "rs_9_function", "custom" : [ { "key": "exercise", "value": "rs-09-function.php" } ] }, { "title" : "Exercise RS-10: Concatenate Two Strings", "launch" : "tools/ccauto/", "resource_link_id": "rs_10_concat", "custom" : [ { "key": "exercise", "value": "rs-10-concat.php" } ] }, { "title" : "Exercise RS-11: Write a function like Python rstrip()", "launch" : "tools/ccauto/", "resource_link_id": "rs_11_rstrip", "custom" : [ { "key": "exercise", "value": "rs-11-rstrip.php" } ] }, { "title" : "Exercise RS-12: Write a function like Python lstrip()", "launch" : "tools/ccauto/", "resource_link_id": "rs_12_lstrip", "custom" : [ { "key": "exercise", "value": "rs-12-lstrip.php" } ] } ], "discussions" : [ { "title" : "From Python to C", "launch" : "mod/tdiscus/", "resource_link_id": "discuss_00_python" } ] }, { "title": "K&R 1: A Tutorial Introduction", "anchor": "tutorial", "icon" : "fa-building", "description": "This chapter covers what might be called the conventional core of C.", "slides": "{apphome}/lectures/KR-1.pptx", "videos" : [ { "title" : "Historical Context For Chapter 1: A Tutorial Introduction", "youtube" : "ucaJhGuVo_Q" }, { "title" : "A Reading of Chapter 1: A Tutorial Introduction", "youtube" : "rPwBgsSnxCw" } ], "references" : [ { "title" : "Chapter 1: A Tutorial Introduction (html)", "href" : "{apphome}/book/chap01.md" }, { "title" : "CC4E Video Playlist", "href" : "https://www.youtube.com/playlist?list=PLlRFEj9H3Oj5NbaFb1b2n8lib01uNPWLa" }, { "title" : "Audio version of the book", "href" : "https://audio.cc4e.com/" } ], "lti" : [ { "title" : "Quiz: Tutorial Introduction", "launch" : "mod/gift/?quiz=chap01.txt", "resource_link_id" : "cc4e_01_quiz" }, { "title" : "Exercise 1-1: Write Hello World", "launch" : "tools/ccauto/", "resource_link_id": "cc4e_1_01", "custom" : [ { "key": "exercise", "value": "1-01-hello.php" } ] }, { "title" : "Exercise 1-3: Fahrenheit / Celsius with Header", "launch" : "tools/ccauto/", "resource_link_id": "cc4e_1_03", "custom" : [ { "key": "exercise", "value": "1-03-heading.php" } ] }, { "title" : "Exercise 1-4: Celsius / Fahrenheit Table", "launch" : "tools/ccauto/", "resource_link_id": "cc4e_1_04", "custom" : [ { "key": "exercise", "value": "1-04-celsius.php" } ] }, { "title" : "Exercise 1-5: Reverse Table", "launch" : "tools/ccauto/", "resource_link_id": "cc4e_1_05", "custom" : [ { "key": "exercise", "value": "1-05-reverse.php" } ] }, { "title" : "Exercise 1-6: Count spaces and newlines", "launch" : "tools/ccauto/", "resource_link_id": "cc4e_1_06", "custom" : [ { "key": "exercise", "value": "1-06-count.php" } ] }, { "title" : "Exercise 1-7: Multiple spaces to one", "launch" : "tools/ccauto/", "resource_link_id": "cc4e_1_07", "custom" : [ { "key": "exercise", "value": "1-07-single.php" } ] }, { "title" : "Exercise 1-10: Print words", "launch" : "tools/ccauto/", "resource_link_id": "cc4e_1_10", "custom" : [ { "key": "exercise", "value": "1-10-words.php" } ] }, { "title" : "Exercise 1-17: Reverse a String", "launch" : "tools/ccauto/", "resource_link_id": "cc4e_1_17", "custom" : [ { "key": "exercise", "value": "1-17-reverse.php" } ] } ], "discussions" : [ { "title" : "Tutorial Introduction", "launch" : "mod/tdiscus/", "resource_link_id": "discuss_01_tutorial" } ] }, { "title": "K&R 2: Types, Operators, and Expressions", "anchor": "core", "icon" : "fa-binoculars", "description": "This chapter covers types, operators, and expressions.", "slides": "{apphome}/lectures/KR-2.pptx", "references" : [ { "title" : "Chapter 2: Types, Operators, and Expressions (html)", "href" : "{apphome}/book/chap02.md" }, { "title" : "Audio version of the book", "href" : "https://audio.cc4e.com/" } ], "videos" : [ { "title" : "Historical Context For Chapter 2: Types, Operators, and Expressions", "youtube" : "mrN-is3rUN0" }, { "title" : "A Reading of Chapter 2: Types, Operators, and Expressions", "youtube" : "rPwBgsSnxCw" } ], "lti" : [ { "title" : "Quiz: Types, Operators, and Expressions", "launch" : "mod/gift/?quiz=chap02.txt", "resource_link_id" : "cc4e_02_quiz" }, { "title" : "Exercise 2-2: Hex to Integer", "launch" : "tools/ccauto/", "resource_link_id": "cc4e_2_02", "custom" : [ { "key": "exercise", "value": "2-02-htoi.php" } ] }, { "title" : "Exercise 2-10: Function lower - conditional expression", "launch" : "tools/ccauto/", "resource_link_id": "cc4e_2_10", "custom" : [ { "key": "exercise", "value": "2-10-lower.php" } ] } ], "discussions" : [ { "title" : "Types, Operators, and Expressions", "launch" : "mod/tdiscus/", "resource_link_id": "discuss_01_core" } ] }, { "title": "K&R 3: Control Flow", "anchor": "control", "icon" : "fa-code-fork", "description": "This chapter covers control flow.", "slides": "{apphome}/lectures/KR-3.pptx", "references" : [ { "title" : "Chapter 3: Control Flow (html)", "href" : "{apphome}/book/chap03.md" }, { "title" : "Audio version of the book", "href" : "https://audio.cc4e.com/" } ], "videos" : [ { "title" : "Chapter 3 - Control Flow", "youtube" : "5YZd9lebqDo" } ], "lti" : [ { "title" : "Quiz: Control Flow", "launch" : "mod/gift/?quiz=chap03.txt", "resource_link_id" : "cc4e_03_quiz" }, { "title" : "Exercise 3-1: Using Switch", "launch" : "tools/ccauto/", "resource_link_id": "cc4e_3_01", "custom" : [ { "key": "exercise", "value": "3-01-expand.php" } ] }, { "title" : "Exercise 3-4: Hex and Binary Conversions", "launch" : "tools/ccauto/", "resource_link_id": "cc4e_3_04", "custom" : [ { "key": "exercise", "value": "3-04-itob.php" } ] }, { "title" : "Exercise 3-6: A simple UNIX uniq implementation", "launch" : "tools/ccauto/", "resource_link_id": "cc4e_3_06", "custom" : [ { "key": "exercise", "value": "3-06-uniq.php" } ] } ], "discussions" : [ { "title" : "Control Flow", "launch" : "mod/tdiscus/", "resource_link_id": "discuss_01_control" } ] }, { "title": "K&R 4: Functions and Program Structure", "anchor": "functions", "icon" : "fa-flask", "description": "This chapter covers functions and program structure.", "slides": "{apphome}/lectures/KR-4.pptx", "references" : [ { "title" : "Chapter 4: Functions and Program Structure (html)", "href" : "{apphome}/book/chap04.md" }, { "title" : "Audio version of the book", "href" : "https://audio.cc4e.com/" } ], "videos" : [ { "title" : "Chapter 4 - Functions and Program Structure", "youtube" : "4dyBj0Jm914" } ], "discussions" : [ { "title" : "Functions and Program Structure", "launch" : "mod/tdiscus/", "resource_link_id": "discuss_01_functions" } ] }, { "title": "K&R 5: Pointers and Arrays", "anchor": "pointers", "icon" : "fa-mouse-pointer", "description": "This chapter covers pointers and arrays.", "references" : [ { "title" : "Chapter 5: Pointers and Arrays (html)", "href" : "{apphome}/book/chap05.md" }, { "title" : "Audio version of the book", "href" : "https://audio.cc4e.com/" } ], "videos" : [ { "title" : "Chapter 5 - Pointers and Arrays", "youtube" : "f3RB6XW48q4" } ], "discussions" : [ { "title" : "Arrays and Pointers", "launch" : "mod/tdiscus/", "resource_link_id": "discuss_01_pointers" } ] }, { "title": "K&R 6: Structures", "anchor": "structures", "icon" : "fa-th-list", "description": "This chapter covers structures.", "references" : [ { "title" : "Chapter 6: Structures (html)", "href" : "{apphome}/book/chap06.md" }, { "title" : "Behind the Scenes: Recording Chapter 6", "href" : "https://youtu.be/BPWt6g2PUBA" }, { "title" : "Audio version of the book", "href" : "https://audio.cc4e.com/" } ], "videos" : [ { "title" : "Chapter 6 - Structures", "youtube" : "U6yCkIckOqY" } ], "discussions" : [ { "title" : "Structures", "launch" : "mod/tdiscus/", "resource_link_id": "discuss_01_structures" } ] }, { "title": "K&R 7: Input / Output", "anchor": "io", "icon" : "fa-arrows-h", "description": "This chapter covers input / output features of C.", "references" : [ { "title" : "Chapter 7: Input / Output (html)", "href" : "{apphome}/book/chap07.md" }, { "title" : "Audio version of the book", "href" : "https://audio.cc4e.com/" } ], "videos" : [ { "title" : "Chapter 7 - Input / Output", "youtube" : "p0utHe1VCKM" } ], "discussions" : [ { "title" : "Input / Output", "launch" : "mod/tdiscus/", "resource_link_id": "discuss_01_io" } ] }, { "title": "K&R 8: The UNIX System Interface", "anchor": "unix", "icon" : "fa-hashtag", "description": "This chapter covers input / output features of C.", "references" : [ { "title" : "Chapter 8: The UNIX System Interface (html)", "href" : "{apphome}/book/chap08.md" }, { "title" : "Audio version of the book", "href" : "https://audio.cc4e.com/" }, { "title" : "Ken Thompson and Dennis Ritchie Explain UNIX (Bell Labs)", "href" : "https://www.youtube.com/watch?v=JoVQTPbD6UY" }, { "title" : "Pushing the Limits of Technology: The Ken Thompson and Dennis Ritchie Story", "href" : "https://www.youtube.com/watch?v=g3jOJfrOknA" }, { "title" : "AT&T Archives: The UNIX Operating System", "href" : "https://www.youtube.com/watch?v=tc4ROCJYbm0" }, { "title" : "UNIX: Making Computers Easier To Use -- AT&T Archives film from 1982, Bell Laboratories", "href" : "https://www.youtube.com/watch?v=XvDZLjaCJuw" } ], "videos" : [ { "title" : "Chapter 8 - The UNIX System Interface", "youtube" : "Au1eiiceVks" } ], "discussions" : [ { "title" : "The UNIX System Interface", "launch" : "mod/tdiscus/", "resource_link_id": "discuss_01_unix" } ] } ] }