Active Outline
General Information
- Course ID (CB01A and CB01B)
- CISD041B
- Course Title (CB02)
- Advanced Python Programming
- Course Credit Status
- Credit - Degree Applicable
- Effective Term
- Fall 2021
- Course Description
- This course continues from CIS 41A, Python Programming, by covering some topics in more detail and adding more advanced topics. Object-oriented programming, data structures, and functions as first-class objects are covered extensively. New topics include data analysis, data visualization, graphical user interface programming, web access, database access, multithreading and multiprocessing, network socket programming, operating system calls, timing and profiling, and Python extensions.
- Faculty Requirements
- Course Family
- Not Applicable
Course Justification
This course meets the transfer requirement for UC and CSU. It is part of the Programming in Python Certificate of Achievement. Building on student proficiency gained in the CIS 41A course, the CIS 41B course covers advanced topics and skills in Python, one of the most popular programming languages in the high-tech industry.
Foothill Equivalency
- Does the course have a Foothill equivalent?
- No
- Foothill Course ID
Formerly Statement
Course Development Options
- Basic Skill Status (CB08)
- Course is not a basic skills course.
- Grade Options
- Letter Grade
- Pass/No Pass
- Repeat Limit
- 0
Transferability & Gen. Ed. Options
- Transferability
- Transferable to both UC and CSU
°®¶¹´«Ã½ GE | Area(s) | Status | Details |
---|---|---|---|
2G4M | DA and 4-yr GE Math Ag | Approved |
Units and Hours
Summary
- Minimum Credit Units
- 4.5
- Maximum Credit Units
- 4.5
Weekly Student Hours
Type | In Class | Out of Class |
---|---|---|
Lecture Hours | 4.0 | 8.0 |
Laboratory Hours | 1.5 | 0.0 |
Course Student Hours
- Course Duration (Weeks)
- 12.0
- Hours per unit divisor
- 36.0
Course In-Class (Contact) Hours
- Lecture
- 48.0
- Laboratory
- 18.0
- Total
- 66.0
Course Out-of-Class Hours
- Lecture
- 96.0
- Laboratory
- 0.0
- NA
- 0.0
- Total
- 96.0
Prerequisite(s)
CIS D041A
Corequisite(s)
Advisory(ies)
Limitation(s) on Enrollment
Entrance Skill(s)
General Course Statement(s)
Methods of Instruction
Lecture and visual aids
Discussion of assigned reading
Discussion and problem solving performed in class
Quiz and examination review performed in class
Homework and extended projects
Collaborative learning and small group exercises
Collaborative projects
Laboratory discussion sessions and quizzes that evaluate the proceedings weekly laboratory exercises
In-class exploration of Internet sites
Assignments
- Required reading from the textbook and class notes
- Programs: 5-8 programming projects, several with 200 or more lines of code and using multiple user-defined modules.
Methods of Evaluation
- Evaluation of programming assignments for correctness, use of structured design principles, documentation and efficiency.
- In-class lab problems, group collaboration problems, quiz questions and/or online tutorials requiring the ability to read and analyze code through debugging and writing snippets of code.
- One or more midterm examinations requiring programming ability to develop an algorithm, evaluate code segments, and write code using specific programming constructs presented in the course.
- A final examination requiring some programming ability to develop an algorithm, evaluate code segments, and write code using specific programming topics presented in the course.
Essential Student Materials/Essential College Facilities
Essential Student Materials:Â
- None.
- Lab with computers that have the Python interpreter, IDE (Integrated Development Environment), and Anaconda distribution installed
Examples of Primary Texts and References
Author | Title | Publisher | Date/Edition | ISBN |
---|---|---|---|---|
Lutz, Mark: Learning Python, 5th edition. O'Reilly Media. ISBN: 978-1-4493-5573-9. 2013 | ||||
python.org online documentation: https://docs.python.org/3/ |
Examples of Supporting Texts and References
Author | Title | Publisher |
---|---|---|
Lubanovic, Bill: Introducing Python, 2nd Edition. O'Reilly. ISBN: 978-1492051367. 2019 |
Learning Outcomes and Objectives
Course Objectives
- Investigate modules, packages and processing sequences
- Investigate functions as first class objects
- Apply calls to OS services
- Design GUI classes
- Analyze and visualize data
- Develop code for web access
- Construct database access
- Design multithreading code
- Design multiprocessing code
- Write network socket code
- Utilize programmer tools
CSLOs
- Design, code, document, analyze, debug, and test advanced level Python programs that include Python modules for database, networking, graphics, and extensions.
Outline
- Investigate modules, packages, and processing sequences
- Modules and packages
- Namespace, naming convention, naming resolution
- Create packages
- Processing sequences
- Iterator class
- Generator expression
- Generator function
- The packing operator
- The unpacking operator
- Modules and packages
- Investigate functions as first-class objects
- Function reference
- map, reduce, filter
- Closures
- Decorators
- Lambda functions
- Apply calls to OS services
- The os module
- Environment variables
- Launching OS commands
- Working with file systems
- The os.path module
- The shutil module
- The sys module
- Command-line arguments
- Date and time
- Design GUI classes
- GUI layout: concept of master
- Widgets and window layout
- Colors, fonts, text, and window resizing
- Event handling
- Callback and bind methods
- Derive window classes from a GUI package
- Coordinating windows in a GUI: update, wait, focus, grab, destroy
- Analyze and visualize data
- numpy array
- Initializing and indexing
- Arithmetic and logical operations
- Common math and statistics computation
- Plotting
- Line graph, bar graph, histogram
- Embed plots in a GUI front end
- numpy array
- Develop code for web access
- The urllib module and the requests package
- Parsing HTML data
- Web scraping and web crawling
- Ethics of web scraping
- The web API
- JSON format
- Construct database access
- The DB API and available interfaces
- Connecting to the SQLite3 DB
- Parameterized statements
- Metadata
- Tables
- Columns
- Constraints
- Foreign keys
- DB Transactions
- Design multithreading code
- Python threads and the GIL
- The threading module
- Parent thread, child thread, daemon thread
- Thread communication
- Event
- Lock, semaphore, and race conditions
- Queue
- The thread manager
- GUI and multithreading
- Design multiprocessing code
- Process definition
- The multiprocessing module
- Process communication
- Event
- Lock
- Queue
- Process pool
- map
- async
- Write network socket code
- Sockets
- Client and server sockets
- Socket protocols
- Threaded servers
- Binary data and the pickle module
- Utilize programmer tools
- Analyzing and testing programs with unittest
- Profiling programs
Lab Topics
- Write and debug code that works with multiple modules, generators, and data structures.
- Write and debug code that implements first-order and higher-order functions, lambda functions, and decorators.
- Write and debug code that calls OS services.
- Write and debug code that uses a GUI to interact with the user.
- Write and debug code that analyzes data and provides data visualization.
- Write and debug code that download, parse, and analyze HTML data.
- Write and debug code that stores and access data in an SQL database.
- Write and debug multi-threaded code.
- Write and debug multiprocessing code.
- Write and debug client and server socket programming code.
- Write, debug, analyze, and profile code for performance.