|   Introduction to Computer Science and ProgrammingSummer 2025 / Term 3 (4 days, 16 lectures: 16 x 45 min. | 12 hours)Course Period: July 10 - 13, 2025	      
		Instructor: Mustafa MISIR 
	
	(Duke Kunshan University, China), mustafa.misir [at] dukekunshan.edu.cn   /   mm940 [at] duke.eduLectures: Thursday / Friday / Saturday / Sunday @ 08:50-12:15 
		(Classroom: School of Computer Science,  
		
		101 
		- Map) 
 Computer Science (CS) is the study of computation, automation, and information. It spans theoretical disciplines such as algorithms, theory of computation, information theory, and automation, to practical disciplines including the design and implementation of hardware and software. Algorithms and Data Structures are central to CS. The Theory of Computation concerns abstract models of computation and general classes of problems that can be solved using them. The fields of Cryptography and Computer Security involve studying the means for secure communication and for preventing security vulnerabilities. Computer Graphics and Computational Geometry address the generation of images. Programming Language Theory (PLT) considers different ways to describe computational processes, and database theory concerns the management of repositories of data. Human-Computer Interaction (HCI) investigates the interfaces through which humans and computers interact, and Software Engineering focuses on the design and principles behind developing software. Areas such as Operating Systems, Computer Networks and Embedded Systems investigate the principles and design behind complex systems. Computer Architecture describes the construction of computer components and computer-operated equipment. Artificial Intelligence (AI) aims to synthesize goal-orientated processes such as problem-solving, decision-making, environmental adaptation, planning and learning found in humans and animals.
 
 CS is an exciting, growing and challenging field that impacts every part of our lives. As an introductory course, fundamental knowledge on a variety of CS topics will be offered while providing essential computational problem-solving skills with hands on programming experience, in Python. This course is open to everyone, with no prerequisites. Successfully completing it will serve as a solid foundation for other courses in CS.
 
 By the end of this course, you will be able to:
 	   
    grasp common computing and programming terms and conceptsemploy common programming patterns and abstractions to solve problems through Pythonformulate problems computationally and solve them through programming Pre-requisites
 
 There is no official textbook for this course. Still, the following books can be used as references.
 Reference Books	
		Introduction to Computation and Programming Using Python: With Application to Computational Modeling and Understanding Data, John V. Guttag (3rd Edition), 2021, MIT Press [ Source Code in Python ]Introducing Python for Computer Science and Data Scientists, Paul Deitel, Harvey Deitel (1st Edition), 2020, Pearson   
		
		Computer Science: an Interdisciplinary Approach, Robert Sedgewick, Kevin Wayne (1st Edition), 2016, Addison WesleyExplorations in Computing: An Introduction to Computer Science and Python Programming, John S. Conery (1st Edition), 2014, Chapman and Hall/CRCFoundations of Computer Science: C Edition, Al Aho, Jeff Ullman (1st Edition), 1994 / 1995, W.H. Freeman (Free Book)Computer Science: An Overview, Glenn Brookshear, Dennis Brylow-Pearson (13th Edition), 2018, PearsonComputer Science Distilled: Learn the Art of Solving Computational Problems, Wladston Ferreira Filho (1st Edition), 2017, Code Energy LLCData Structures and Algorithms in Python, Michael T. Goodrich, Roberto Tamassia, Michael H. Goldwasser (1st Edition), 2013, WileyPython Programming: An Introduction to Computer Science, John Zelle (3rd Edition), 2016, Franklin, Beedle & AssociatesProblem Solving with Algorithms and Data Structures using Python, Brad Miller and David Ranum, Franklin (2nd Edition), 2011, Beedle & Associates (Free Book)Starting out with Python, Tony Gaddis (5th Edition), 2021, PearsonPython Programming: A Step-by-Step Guide to Learning the Language, C. K. Dhaliwal, Poonam Rana, T. P. S. Brar (1st Edition), 2025, CRC PressQuick Python 3, David Matuszek  (1st Edition), 2024, CRC PressThe Quick Python Book, Naomi Ceder (4th Edition), 2025, Manning PressLearning Python: Powerful Object-Oriented Programming, Mark Lutz (6th Edition), 2025, O'Reilly MediaProgramming with Python for Engineers, Sinan Kalkan, Onur T. Sehitoglu, Gokturk Ucoluk (1st Edition), 2024, SpringerPython Programming and Numerical Methods: A Guide for Engineers and Scientists, Qingkai Kong, Timmy Siauw, Alexandre Bayen (1st Edition), 2020, Academic Press (Free Book)Think Python: How to Think Like a Computer Scientist, Allen B. Downey (2nd Edition), 2016, O'Reilly Media (Free Book)How to Think Like a Computer Scientist: Learning with Python 3, Peter Wentworth, Jeffrey Elkner, Allen B. Downey, Chris Meyers (3rd Edition), 2012 (Free Book)A Programmer's Guide to Computer Science (Vol. 1),  William M. Springer II (1st Edition), 2019, Jaxson MediaA Programmer's Guide to Computer Science (Vol. 2),  William M. Springer II (1st Edition), 2020, Jaxson MediaA Byte of Python, Swaroop C. H. (4th Edition), 2016 (Free Book)Project Python, Devin Balkcom, 2011 (Free Book)Python for Everybody: Exploring Data in Python 3, Charles Severance, 2016 (Free Book)Automate The Boring Stuff With Python, Al Sweigart (2nd Edition), 2019, No Starch Press (Free Book)Beyond the Basic Stuff with Python: Best Practices for Writing Clean Code, Al Sweigart (1st Edition), 2020, No Starch Press (Free Book)Python Programming in Context, Bradley N. Miller, David L. Ranum, Julie Anderson (3rd Edition), 2019, Jones & Bartlett LearningA Hands-On, Project-Based Introduction to Programming, Eric Matthes (2nd Edition), 2016, No Starch Press (Free Book)Learn Python 3 the Hard Way, Zed A. Shaw (1st Edition), 2017, Addison-WesleyIntroducing Python: Modern Computing in Simple Packages, Bill Lubanovic (2nd Edition), 2019, O'Reilly MediaClean Code in Python: Develop Maintainable and Efficient Code, Mariano Anaya (2nd Edition), 2021, PacktThe Self-Taught Computer Scientist: The Beginner's Guide to Data Structures & Algorithms, Cory Althoff (1st Edition), 2021, WileyThe Big Book of Small Python Projects: 81 Easy Practice Programs, Al Sweigart (1st Edition), 2021, No Starch Press (Free Book)Invent Your Own Computer Games with Python, Al Sweigart (4th Edition), 2016, No Starch Press (Free Book)Cracking Codes with Python: An Introduction to Building and Breaking Ciphers, Al Sweigart (1st Edition), 2018, No Starch Press (Free Book)Zero to Py: A Comprehensive Guide to Learning the Python Programming Language, Michael Green (1st Edition), 2023, LeanpubLearn AI-Assisted Python Programming, Leo Porter, Daniel Zingaro  (2nd Edition), 2024, Manning Press 
 
 Lecture Notes / Slides	        
    
	   
				Day 0: Programming (Optional)
 Day 1: Introduction, Background and Python Programming I   [10/07]   (Keywords: Terminology and Basics; Variables; Expressions; Statements)        
					
  					    
					Computer Science: BasicsPython Programming: BackgroundVariables, Statements and Basic OperatorsControl StatementsDaily Homework: TBA 
 Day 2: Python Programming II   [11/07]   (Keywords: Strings; Lists; Dictionaries; Sets; Python: Turtle)     
					    
					FunctionsStringsSequence Collections: ListsNon-Sequence Collections: DictionariesDaily Homework: TBA 
 Day 3: Algorithmic Concepts and Computational Problems   [12/07]   (Keywords: Files; Algorithms; Computational Problems; Recursion; Searching; Sorting; Computational Complexity; Big-O)
	     
		 
		 							 
					
					FilesRecursionSearching and SortingComputational ComplexityDaily Homework: TBA 
 Day 4: Elementary Data Structures   [13/07]   (Keywords: Abstract Data Types; Data Structures; Stack; Queues; Linked Lists)          
					StacksQueuesLinked ListsDaily Homework: TBA 
 
 Grading         
		Daily Programming Assignments: 4 x 25% 
 
 Reference CoursesIntroductory Computer Science / (Python) Programming:
 
 Online (Web) Compilers
 
 Cheat Sheets
 
 Reference (Example) Projects
 
 Other Books / ArticlesComputing / Computers + History:
	
	
	
	      
		Software Engineering / Development / Programming:
		Computing: A Concise History, Paul E. Ceruzzi (1st Edition), 2012, MIT Press
		
		Code: The Hidden Language of Computer Hardware and Software, Charles Petzold (1st Edition), 2000, Microsoft Press		
		
		The Elements of Computing Systems: Building a Modern Computer from First Principles, Noam Nisan, Shimon Schocken (2nd Edition), 2021, MIT Press		
		
		The Constitution of Algorithms: Ground-Truthing, Programming, Formulating,  Florian Jaton (1st Edition), 2021, MIT Press		
		
		Ideas that Created the Future: Classic Papers of Computer Science, Harry R. Lewis (1st Edition), 2021, MIT Press      
		The Art of Doing Science and Engineering: Learning to Learn, Richard R. Hamming (1st Edition), 2005/2020, Gordon and Breach Science Publishers / Stripe Press           
		Blown to Bits: Your Life, Liberty, and Happiness After the Digital Explosion, Hal Abelson, Ken Ledeen, Harry Lewis (2nd Edition), 2020, Addison-Wesley  (Free Book)
		Lauren Ipsum: A Story About Computer Science and Other Improbable Things, Carlos Bueno (1st Edition), 2014, No Starch Press
		
		The Big Score: The Billion-Dollar Story of Silicon Valley, Michael S. Malone (2nd Edition), 2021, Stripe Press		
		
		IBM: The Rise and Fall and Reinvention of a Global Icon, James W. Cortada, 2019, MIT Press
		
		ENIAC in Action-Making and Remaking the Modern Computer,  Thomas Haigh, Mark Priestley, Crispin Rope, 2016, MIT Press
		  
		Colossus: The Secrets of Bletchley Park's Codebreaking Computers, Jack Copeland (Ed.), 2006, Oxford University Press
		 
	
		Web Programming:
		Modern Software Engineering: Doing What Works to Build Better Software Faster, David Farley (1st Edition), 2021, Addison-Wesley
		
		Software Engineering, Ian Sommerville (10th Edition), 2015, Pearson
		
		Engineering Software Products: An Introduction to Modern Software Engineering, Ian Sommerville (1st Edition), 2019, Pearson
		
		Design Patterns: Elements of Reusable Object-Oriented Software, Gamma Erich, Helm Richard, Johnson Ralph, Vlissides John, Grady Booch (1st Edition), 1994, Addison-Wesley
		
		Domain-Driven Design: Tackling Complexity in the Heart of Software, Evans Eric (1st Edition), 2003, Addison-Wesley
		
		Software Engineering at Google: Lessons Learned from Programming Over Time, Titus Winters, Tom Manshreck, Hyrum Wright (1st Edition), 2020, O'Reilly      
		
		OO in One Sentence: Keep it Dry, Shy, and Tell the Other Guy. Hunt, A., Thomas, D., 2004. IEEE Software, 21(3)
		        
		
		Refactoring: Improving the Design of Existing Code, Martin Fowler (2nd Edition), 2018, Addison-Wesley
		
		Clean Code: A Handbook of Agile Software Craftsmanship, Robert C. Martin (1st Edition), 2008, Pearson
		
		Code Complete: A Practical Handbook of Software Construction, Steve McConnell (2nd Edition), 2004, Microsoft Press [ Online Course ]
		
		The Pragmatic Programmer: Your Journey to Mastery, David Thomas, Andrew Hunt (2nd Edition), 2019, Addison-Wesley
		 
	      
	
  
		Foundations of Computer Science:
		Internet and World Wide Web: How To Program, Paul Deitel, Harvey Deitel, Abbey Deitel (5th Edition), 2011, Pearson
		
		Learning Web Design: A Beginner's Guide to HTML, CSS, JavaScript, and Web Graphics, Jennifer Robbins (5th Edition), 2018, O'Reilly     
		
		Web Programming with HTML5, CSS, and JavaScript, John Dean (1st Edition), 2019, Jones & Bartlett Learning  
		
		HTML and CSS QuickStart Guide, David DuRocher (1st Edition), 2021, ClydeBank       
		
		HTML and CSS: Design and Build Websites, Jon Duckett (1st Edition), 2011, John Wiley & Sons     
		
		JavaScript: The Definitive Guide, David Flanagan (7th Edition), 2020, O'Reilly     
		
		Eloquent Javascript: A Modern Introduction to Programming, Marijn Haverbeke (3rd Edition), 2018, No Starch Press
		 
	      
    
		
		
		Concrete Mathematics: A Foundation for Computer Science, Ronald L. Graham, Donald E. Knuth, Oren Patashnik (2nd Edition), 1994, Addison-Wesley
		
		Mathematics for Computer Science, Eric Lehman, F. Thomson Leighton, Albert R. Meyer (1st Edition), 2017 (2018R), Samurai Media (Free Book) [ 6.042: Mathematics for Computer Science (MIT) - Materials ]
		
		Mathematics: A Discrete Introduction, Edward A. Scheinerman (3rd Edition), 2012, Cengage Learning
		
		Discrete Mathematics and Its Applications, Kenneth H. Rosen (8th Edition), 2019, McGraw-Hill
		
		Discrete Mathematics: An Open Introduction, Oscar Levin (3rd Edition), 2021 (Free Book)
		
		Essential Discrete Mathematics for Computer Science, Harry Lewis, Rachel Zax (1st Edition), 2019, Princeton University 
		
		Connecting Discrete Mathematics and Computer Science, David Liben-Nowell (1st Edition), 2022, Cambridge University Press     
		
		Book of Proof, Richard H. Hammack (3rd Edition), 2018 (Free Book)
		
		Applied Combinatorics, Mitchel T. Keller, William T. Trotter (3rd Edition), 2021 (Free Book)
		
		A Decade of the Berkeley Math Circle: The American Experience (Volume 1, Volume 2), Zvezdelina Stankova, Tom Rike (Eds), 2008, American Mathematical Society
		
		How to Think Like a Mathematician: A Companion to Undergraduate Mathematics, Kevin Houston (1st Edition), 2009, Cambridge University Press
		
		The Art of Problem Solving (Vol. 2): And Beyond, Richard Rusczyk, Sandor Lehoczky (7th Edition), 2006, AoPS Incorporated
		
		The Art of Problem Solving (Vol. 1), Sandor Lehoczky, Richard Rusczyk (7th Edition), 2006, AoPS Incorporated
		
		What Is Mathematics? An Elementary Approach to Ideas and Methods, Richard Courant, Herbert Robbins (2nd Edition), 1996, Oxford University Press
		 Algorithms + Data Structures:
 	 
	
	
	Paradigms of Programming Languages:Introduction to Algorithms, Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford Stein (3rd Edition), 2009, MIT Press (Free Book: ProQuest - Duke U.) [ Lecture Slides ]Algorithm Design, John Kleinberg, Eva Tardos (1st Edition), 2005, Pearson - Addison Wesley [ Lecture Slides & Examples ]Algorithms, Sanjoy Dasgupta, Christos Papadimitriou, Umesh Vazirani (1st Edition), 2006, McGraw-HillAlgorithms, Robert Sedgewick, Kevin Wayne (4th Edition), 2011, Addison-WesleyIntroduction to the Analysis of Algorithms, Robert Sedgewick, Philippe Flajolet (2nd Edition), 2013, Addison-Wesley [ Lecture Slides & Videos ]The Algorithm Design Manual, Steven Skiena (3rd Edition), 2020, Springer [ Old: Lecture Slides & Videos - New: Lecture Slides & Videos ]Foundations of Algorithms, Richard Neapolitan (5th Edition), 2014, Jones & Bartlett LearningApplying Reinforcement Learning on Real-World Data with Practical Examples in Python, Philip Osborne, Kajal Singh, Matthew E. Taylor, 2022, Springer (Free Book)Data Structures and Algorithm Analysis in C++, Mark A. Weiss (4th Edition), 2014, Pearson [ Source Code in C++ ]Algorithm Design and Applications, Michael T. Goodrich, Roberto Tamassia (1st Edition), 2015, WileyAlgorithms Illuminated (Part 1): The Basics, Tim Roughgarden (1st Edition), 2017, Soundlikeyourself Publishing [ Lecture Slides & Videos ]Algorithms Illuminated (Part 2): Graph Algorithms and Data Structures, Tim Roughgarden (1st Edition), 2018, Soundlikeyourself Publishing [ Lecture Slides & Videos ]Algorithms Illuminated (Part 3): Greedy Algorithms and Dynamic Programming, Tim Roughgarden (1st Edition), 2019, Soundlikeyourself Publishing [ Lecture Slides & Videos ]Algorithms Illuminated (Part 4): Algorithms for NP-Hard Problems, Tim Roughgarden (1st Edition), 2020, Soundlikeyourself Publishing [ Lecture Slides & Videos ]Introduction to the Design and Analysis of Algorithms, Anany Levitin (3rd Edition), 2011, Addison-WesleyDesign and Analysis of Computer Algorithms, Alfred Aho, John Hopcroft, Jeffrey Ullman  (1st Edition), 1974, Addison-WesleyData Structures and Algorithms, Alfred Aho, Jeffrey Ullman (1st Edition), 1983, PearsonFundamentals of Computer Algorithms, Ellis Horowitz, Sartaj Sahni (1st Edition), 1984, CS PressA Guide to Algorithm Design: Paradigms, Methods, and Complexity Analysis, Anne Benoit, Yves Robert, Frederic Vivien  (1st Edition), 2014, CRCAlgorithms: Sequential, Parallel, and Distributed, Kenneth A. Berman, Jerome L. Paul (1st Edition), 2004, Course TechnologyThe Design and Analysis of Algorithms, Dexter C. Kozen (1st Edition), 1992, SpringerAlgorithms, Jeff Erickson (1st Edition), 2019 (Free Book)The Design of Approximation Algorithms, David P. Williamson, David B. Shmoys (1st Edition), 2011, Cambridge University (Free Book)Approximation Algorithms, Vijay V. Vazirani (1st Edition), 2003, SpringerIntroduction to the Theory of Computation, Michael Sipser (3rd Edition), 2013, CengageWhat Can Be Computed?: A Practical Guide to the Theory of Computation, John MacCormick (1st Edition), 2018, Princeton UniversityComputational Complexity: A Modern Approach, Sanjeev Arora, Boaz Barak (1st Edition), 2009, Cambridge University (Free Draft)Algorithms and Complexity, Herbert S. Wilf (2nd Edition), 2002, CRCComplexity Theory: Exploring the Limits of Efficient Algorithms, Ingo Wegener (1st Edition), 2005, SpringerAutomata, Computability and Complexity: Theory and Applications, Elaine A. Rich (1st Edition), 2007, Pearson (Free Book)Think Complexity, Allen B. Downey (2nd Edition), 2016 / 2018, Green Tea Press / O'Reilly Press (Free Book) [ Source Code in Python ]Dive Into Algorithms: A Pythonic Adventure for the Intrepid Beginner, Bradford Tuckfield (1st Edition), 2021, No Starch PressAlgorithms in a Nutshell: A Practical Guide, George T. Heineman, Gary Pollice, Stanley Selkow (2nd Edition), 2016, O'Reilly Press (Partially Python)A Common-Sense Guide to Data Structures and Algorithms: Level Up Your Core Programming Skills, Jay Wengrow (2nd Edition), 2020, Pragmatic Bookshelf [ Source Code in Python, Ruby and JavaScript ] 
	
		
		Programming Language Pragmatics, Michael L. Scott (4th Edition), 2015, Morgan Kaufmann
		
		Types and Programming Languages, Benjamin C. Pierce (1st Edition), 2002, MIT Press
		
		Essentials of Programming Languages, Daniel P. Friedman, Mitchell Wand (3rd Edition), 2008, MIT Press
		 More Related:
 
 
 Other Materials / Resources	 				
		          
		             
		Oxford Quick Reference: A Dictionary of Computer Science by Andrew Butterfield, Gerard Ekembe Ngondi, Anne Kerr, 2016
		Official Python Documentation: Tutorial & Glossary     
		An Overview of Python Data Visualization libraries
		Philip W. L. Fong, 2009. Reading a Computer Science research paper. ACM SIGCSE Bulletin, 41(2), pp.138-140  	
		You and Your Research by Richard Hamming (Bell Labs / NPS). Bell Communications Research Colloquium Seminar, 7 March 1986  
		An Online LaTeX Editor: Overleaf   
		LaTeX Tutorial (Overleaf): Learn LaTeX in 30 minutes   
		The Not So Short Introduction to LaTeX by Tobias Oetiker, Hubert Partl, Irene Hyna, Elisabeth Schlegl, 2021 
		Git Tutorials & Cheat Sheet by Atlassian
		Git Cheat Sheet by Github     
		Pro Git (a book on Git) by Scott Chacon and Ben Straub, 2021
		Version Control with Git by Software Carpentry      
		     
		How To Speak / Present (Video) by Patrick Winston (MIT)
		 
 |