MW 2:30 - 3:45pm, RTBA. Also recorded to Canvas Media Library.
Information technology is ubiquitous. This course focuses on the real world artifacts and implementations that comprise the vital computational organisms that populate our world. Topics include hardware (computer architecture), software (programming languages, databases, networking), and related issues such as security, and software engineering. Examples stress practical applications of technology. Homework assignments will generally involve programming in Python. Specifically, the course provides a thorough exposure to Python, and covers useful topics including UNIX, data structures, SQL and databases, cryptography, recursion, and object oriented programming. Students acquire tools and understanding that they can apply in many areas both inside academia and in industry. The course satisfies the introductory programming requirement for the Certificate in Programming.
Complete with quizzes, exercises, and helpful illustrations, this easy-to-follow, self-paced tutorial gets you started with both Python 2.7 and 3.3— the latest releases in the 3.X and 2.X lines—plus all other releases in common use today. You’ll also learn some advanced language features that recently have become more common in Python code.
If you need help writing programs in Python 3, or want to update older Python 2 code, this book is just the ticket. Packed with practical recipes written and tested with Python 3.3, this unique cookbook is for experienced Python programmers who want to focus on modern tools and idioms
It's easy to start writing code with Python: that's why the language is so immensely popular. However, Python has unique strengths, charms, and expressivity that can be hard to grasp at first -- as well as hidden pitfalls that can easily trip you up if you aren't aware of them. Effective Python will help you harness the full power of Python to write exceptionally robust, efficient, maintainable, and well-performing code. Utilizing the concise, scenario-driven style pioneered in Scott Meyers's best-selling Effective C++, Brett Slatkin brings together 59 Python best practices, tips, shortcuts, and realistic code examples from expert programmers.
“Python is an easy to learn, powerful programming language.” Those are the first words of the official Python 3.10 tutorial. That is true, but there is a catch: because the language is easy to learn and put to use, many practicing Python programmers leverage only a fraction of its powerful features.
An experienced programmer may start writing useful Python code in a matter of hours. As the first productive hours become weeks and months, a lot of developers go on writing Python code with a very strong accent carried from languages learned before. Even if Python is your first language, often in academia and in introductory books it is presented while carefully avoiding language-specific features.
As a teacher introducing Python to programmers experienced in other languages, I see another problem that this book tries to address: we only miss stuff we know about. Coming from another language, anyone may guess that Python supports regular expressions, and look that up in the docs. But if you’ve never seen tuple unpacking or descriptors before, you will probably not search for them, and you may end up not using those features just because they are specific to Python.
This book is not an A-to-Z exhaustive reference of Python. Its emphasis is on the language features that are either unique to Python or not found in many other popular languages. This is also mostly a book about the core language and some of its libraries. I will rarely talk about packages that are not in the standard library, even though the Python package index now lists more than 60,000 libraries, and many of them are incredibly useful.
The course requirements consist of class attendance, (more-or-less) weekly programming assignments in Python and occasional written homework, and two MIDTERMS and a FINAL EXAM. Plan on spending between 6-8 hours per week on the course outside of class. The programming assignments are an integral part of the course.
Please try not to leave the homework to the last minute. You will be more efficient, learn more, have more chance to get help, and generally be calmer and happier if you do the associated reading first and start the programming or other problems early.
The final grade in the course will be based on class participation (as measured by in class quizzes), your performance on the programming assignments and other homework, and the exams. The weighting of these components will be approximately 33% on class participation and homework and 67% on exams.
Late work without a Dean's extension will be assessed a penalty of 5 points per day, based on the day and time recorded by the Zoo electronic submit program. At the end of term, up to 50 points will be deducted from the total lateness penalties your homework has accrued. However, according to Yale College regulations, *no* homework can be accepted after the end of Reading Week without a Temporary Incomplete (TI) authorized by your dean.
If you have a Dean's extension or a TI, making up missed work may involve alternative assignments, at the discretion of the instructor; please check with the instructor in this case.
Unless otherwise specified, the homework assignments are your individual responsibility. Plagiarism is a violation of University rules and will not be tolerated. You must neither copy work from others (at Yale or elsewhere) nor allow your own work to be copied. You are definitely on the wrong side of the boundary if you give or receive a printed or electronic copy of your or anyone else's work for the course from this term or previous terms.
You are encouraged to ask others for help with the computers and Unix, with questions about Python, general questions about the concepts and material of the course, but if you need more extensive help with a program or other assignment, please ask a ULA or the instructor for assistance. Working in groups to solve homework problems is not permitted in this course. Please talk to the instructor if you have any questions about this policy.
This semester, we have a dedicated accomodation assistant for Computer Science, Amma. Her contact email is: cpcsaccommodatedexams@yale.edu. Students who would like to use approved testing accommodations in the course should send their letter to Amma (with a copy to stephen.slade@yale.edu) and coordinate with her at that email address. Use the course identifier CPSC 2000 in all communication to Amma since she will be working with other CPSC courses.
During my years at Yale, I have had students who were either blind or deaf. They were generally among the best in the class. I want to make you succeed.
Week | Date | Topic |
---|---|---|
1 | Aug 27, 29 | Introduction. Python: strings, lists, UNIX, recursion. |
2 | Sep 3 | Python: sorting, dicts, files, testing |
3 | Sep 8, 10 | Python: regular expressions, utilities, UNIX shell scripts |
4 | Sep 15, 17 | Python: object oriented programming |
5 | Sep 22, 24 | Python: data structures (oop) |
6 | Sep 29, Oct 1 | Python: databases (oop) and SQL | 7 | Oct 6, 8 | Review for midterm I. |
Oct 9 | Midterm exam I. | |
8 | Oct 13 | Computer Architecture. Python Virtual Machine. |
Oct 15 | No class. Yale Fall Break. | |
9 | Oct 20, 22 | Cryptography and Information Security |
10 | Oct 27, 29 | Cryptography and Information Security |
11 | Nov 3, 5 | Review for midterm II. |
Nov 6 | Midterm II. | |
12 | Nov 10, 12 | Complexity of algorithms. |
Nov 17, 19 | Machine learning | |
13 | Nov 26, 28 | No class. Thanksgiving break. |
14 | Dec 1, 3 | Machine Learning, Review for Final |
TBA | Final Exam, RTBA |