-
Notifications
You must be signed in to change notification settings - Fork 0
/
.ipynb
109 lines (109 loc) · 7.12 KB
/
.ipynb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# W200 Python Fundamentals for Data Science, UC Berkeley MIDS\n",
"\n",
"# Project 1\n",
"\n",
"Project 1 is an individual project that will focus on the object-oriented principles. Your project needs to implement object oriented principles and should be interactive so that the user can play around with it. **The code base needs to be entirely composed of objects (at least 5 should be in your creation) and should be called from the command line as a .py file so it can be easily ported to to a production scenario.**\n",
"\n",
"Some examples:\n",
"\n",
"- A popular board or card game\n",
"- A flower shop (you create and manage inventory, a simple cash register, etc.)\n",
"- An adventure game where characters can do things like 1) explore a world 2) trade with other characters. Coding some element of chance into the world has made these even more interesting\n",
"- Something relating to your everyday work, maybe some process you would like to model or code up\n",
"- Look at our [showcase](https://github.com/UCB-INFO-PYTHON/MIDS_python_showcase) of previous projects to get inspiration \n",
"\n",
"## Project Phases & Due Dates\n",
"\n",
"Due dates are as follows - place each requirement in your github repository under the project1 folder:\n",
"- Week 1: Project Design Document - Rough Idea\n",
" - Feel free to email your section instructor with your project idea (a paragraph or two) for feedback. Include what objects you think you will use.\n",
"- Week 2: Finalize Design Document \n",
" - Push your design document (in pdf) to your GitHub repository by 11:59PM PST the day before class, week of 21-25 June.\n",
" - Live session 9 will include breakout rooms where you share code and get peer/instructor feedback\n",
"- Week 3 & 4: Code project\n",
" - Projects should be complete prior to class. Students will be allowed to update their projects for the next 24 hours after class to make adjustments as needed based on class feedback.\n",
" - You will give a 5 minute presentation during your in-person class, week of 5-9 July.\n",
" - Push your final code and reflection document (in pdf) to your GitHub repositiory by 11:59PM PST the day **after** class, week of 5-9 July.\n",
"\n",
"## Design document (10 points):\n",
"\n",
"For the first step, your assignment is to write up a one to two page design document detailing the project you will be working on over the next several weeks. This is essentially building out the requirements for your project. **Before you begin coding you need to get approval from your section instructor that your project is scoped well enough.**\n",
"\n",
"In this document, you need to describe:\n",
" \n",
"- The specifications of the classes you intend to write (at least 5!) \n",
" - Briefly describe the purpose of each class\n",
" - List expected methods/functions that belong to each class\n",
" - List inputs and outputs for each method/function\n",
"- How the user will interact with the program / objects\n",
"- Include the features that you're going to include in the project and why you think it should be of sufficient complexity to meet the project goals.\n",
"- Coding is iterative. Your final code may not match the proposal exactly.\n",
"- Please make this document a pdf before uploading to github!\n",
"\n",
"## Requirements & Limits (80 points)\n",
"\n",
"You should aim for around 300 to 500 lines of code. You will not be graded on the number of lines of code you write nor will this be a comparison of projects implemented by your peers. For example, a project with 500 lines of code is not guaranteed to do better than a project with 300 lines of code. As we've seen, it's not necessarily the number of lines, it's the value in those lines. Being concise is a good thing and if you're at all worried that you're not going to hit that *soft* requirement please let us know.\n",
"\n",
"- **This project must be composed entirely of objects, with only scripting outside of objects when absolutely necessary**\n",
"- This project must not exceed 750 lines of code\n",
" - For example, if you have a text game you can put the text in a separate file\n",
" - The line count requirement does not include whitespace or comments (please include both to make your code readable)\n",
"- **Your code should be sufficiently complex to require at least 5 separate classes** (but are not likely to need more than 10 classes)\n",
"- The objects should be different levels of complexity, for example some may be basic containers and others should manage those containers (i.e. a menu-serving object and/or a game-play object) as well as demonstrating various flow control and data types\n",
"- The project will be run from the command line as a .py file.\n",
"- The project needs to have a user-interface and be interactive with a user\n",
"- The project needs to do some user error checking as well as have a help 'screen' or printed instructions for the user\n",
"- All code needs to be well commented with both comments and docstrings\n",
"- Without specific permission, you may not use anything outside of the standard Anaconda-installed libraries. \n",
"- Please include all references that you used to build out your application.\n",
"- **While it is acceptable and even desirable to take inspiration and learn specific syntax from previous projects and stackoverflow code, this code base must be your own work.**\n",
" \n",
"## In-class presentation\n",
"\n",
"The in-class presentation will consist of you quickly running through your program to show some of the interesting features. Be prepared to show or explain your code if questions arise. Overall the presentation should last about 5 minutes.\n",
"\n",
"## Reflection Document (10 points)\n",
"\n",
"When submitting your final code, include a ~one page reflection document containing:\n",
"- Instructions about how we should go about testing and using your project\n",
"- What you completed and anything that you didn't complete in the project that you would finish later\n",
"- Discuss challenges you faced and how you overcame them\n",
"- Please make this document a pdf before uploading to github!\n",
"\n",
"## For advanced students\n",
"\n",
"- You might want to use proactive packaging for your code base to present it in a professional manner\n",
"- Cookiecutter is an easy way to see what a production product requires: \n",
" * https://cookiecutter.readthedocs.io/en/1.7.2/"
]
}
],
"metadata": {
"anaconda-cloud": {},
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.3"
}
},
"nbformat": 4,
"nbformat_minor": 1
}