Skip to content

Commit

Permalink
Import from 5784
Browse files Browse the repository at this point in the history
  • Loading branch information
erelsgl committed Aug 6, 2024
0 parents commit f08e1ca
Show file tree
Hide file tree
Showing 13 changed files with 242 additions and 0 deletions.
Binary file added 2023, ND cone.pdf
Binary file not shown.
50 changes: 50 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
<div dir='rtl'>

# אוניברסיטת אריאל - בית הספר למדעי המחשב - פרוייקט שנתי ה'תשפ"ה

לפי החלטת המחלקה, בשנת ה'תשפ"ה יוצעו פרוייקטים מחקריים בלבד.

## מה זה בכלל מחקר, ולמה זה טוב?

בשנה א למדתם תיכנות - זה ידע חשוב, אבל הוא מאפשר לכם
רק לפתור בעיות בשפה מסויימת. ייתכן שבמקום העבודה שלכם ישתמשו בשפה אחרת.

בשנה ב למדתם אלגוריתמים - זה ידע כללי יותר, כי הוא מאפשר לכם לפתור בעיות
בכל שפת-תיכנות שתשתמשו בה.
אבל עדיין, אתם יכולים רק לפתור את הבעיות שלמדתם.

*פרוייקט מחקרי* נותן לכם ידע כללי עוד יותר -
הוא מאמן אתכם בלימוד עצמי, מימוש ובדיקה של אלגוריתמים חדשניים -
אלגוריתמים שפורסמו בספרות המדעית רק בשנים האחרונות.
כישרון ללמוד אלגוריתמים חדשים מאפשר לכם להתעדכן ולהישאר בחזית הידע המדעי.
בנוסף, כישורי מחקר פותחים לכם אפשרויות לעתיד:

* עבודה במחלקת-מחקר בחברה גדולה (כמו גוגל, פייסבוק, יבמ) - המחלקה שבה ממציאים את המוצרים החדשים.
* אפשרות להמשיך באוניברסיטה לתואר שני או שלישי.

## איך מתנהל הפרוייקט ואיך נקבע הציון?

לכל פרוייקט יש לוח-זמנים ובו כ-10 שלבים. יש להציג למנחה את כל אחד מהשלבים בשעת הקבלה. כל שלב מזכה בכ-5 נקודות;
הציון נקבע ע"י המנחה. בסה"כ אפשר לצבור במהלך העבודה עד 50 נקודות.

בסיום הפרוייקט, יש לכתוב דו"ח המסכם את תוצאות המחקר שלכם - מה עשיתם ומה גיליתם, ולהגיש למנחה ולרכז הפרוייקטים.
כמו כן, יש להיבחן על הפרוייקט בעל-פה בפני רכז הפרוייקטים, בנוכחות המנחה.
הציון שלכם על הדו"ח ועל הבחינה נקבע ע"י שלושה חברי-סגל, בהתייעצות עם המנחה:

* רכז הפרוייקטים - ד"ר אור אנידג'ר (20 נקודות);
* פרופ' בועז בן משה (15 נקודות);
* פרופ' עמית דביר (15 נקודות).

בסך-הכל אפשר לצבור בשלב הבחינה עד 50 נקודות, בסה"כ 100.


## איזה פרוייקטים מחקריים יש?

השנה אני מציע פרוייקטים מחקריים מכמה סוגים עיקריים:

1. [פיתוח אלגוריתם חדש](research/README.md).
2. [פוליטיקה הוגנת](experiments/README.md): תיכנות, בדיקה והשוואה בין אלגוריתמים לחלוקה הוגנת של משאבים ציבוריים, בעזרת סקרי דעת-קהל וניסויי הדמיה.
3. [תכנות אלגוריתמים מחקריים](opensource/README.md): קריאת מאמר מחקרי, תיכנות האלגוריתם שבמאמר, השוואה לאלגוריתמים אחרים, שיפור ביצועים, ושילוב במערכת קוד פתוח.
4. [משחק מחשב רציני](games/README.md): עיצוב פיתוח ותיכנות משחק-מחשב חינוכי או מחקרי, ובדיקת ההשפעה והתועלת של המשחק על שחקני ניסוי.

</div>
Binary file added Riley Murray thesis, June 1 deposit.pdf
Binary file not shown.
15 changes: 15 additions & 0 deletions experiments/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Experiments in fair politics

The goal of these projects is to implement novel algorithms for fair elections and fairly dividing public resources, and test the algorithms on real data elicited using opinion polls. The topics are:

1. Fair allocation of budget; see https://dl.acm.org/doi/abs/10.1145/3328526.3329557 and https://ojs.aaai.org/index.php/AAAI/article/view/20421 .

2. Fair election to knesset; see https://en.wikipedia.org/wiki/Proportional_approval_voting and https://dl.acm.org/doi/abs/10.1145/3465456.3467641 .

3. Fair primary elections; see https://en.wikipedia.org/wiki/Phragmen%27s_voting_rules .

4. Fair deteremination of schedule for politicians; see https://arxiv.org/abs/2105.08043 .

5. Developing and implementing a cryptographic voting system (requires a course in cryptography).

See [timetable](timetable.md).
23 changes: 23 additions & 0 deletions experiments/timetable.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Experiments in fair politics - Time Table

There are 10 milestones. Each milestone is worth 5% of the final grade:

1. Reading and understanding the paper. Due by 15/10/23.

2. Implementing and testing the algorithms. Due by 15/11/23.

3. Designing and running the first opinion-poll. Due by 15/12/23.

4. Analyzing the first poll results. Due by 15/1/24.

5. Designing and running a follow-up poll. Due by 15/2/24.

6. Analyzing the second poll results. Due by 15/3/24.

7. Improving the algorithm based on poll results. Due by 15/4/24.

8. Running a follow-up poll to test improved algorithm. Due by 15/5/24.

8. Analyzing third poll results. Due by 15/6/24.

10. Writing the final report. Due by 15/7/24.
8 changes: 8 additions & 0 deletions games/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# Educational computer game

In these projects, you will develop a computer game that can be used for education or research.
The projects are based on a course in game development, which was given in the CS department in previous years. You can get the course materials from 5783 [here](https://github.com/gamedev-at-ariel/gamedev-5783), and the recordings from 5782 [here](https://www.youtube.com/playlist?list=PLM9fKcsATjxjqsyIcU4IRWuo-w4rQf_Pb).

For game ideas and subjects, see [here](https://github.com/erelsgl-at-ariel/projects-5783/tree/main/games).

See [timetable](timetable.md).
8 changes: 8 additions & 0 deletions games/README_en.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# Educational computer game

In these projects, you will develop a computer game that can be used for education or research.
The projects are based on a course in game development, which was given in the CS department in previous years. You can get the course materials from 5783 [here](https://github.com/gamedev-at-ariel/gamedev-5783), and the recordings from 5782 [here](https://www.youtube.com/playlist?list=PLM9fKcsATjxjqsyIcU4IRWuo-w4rQf_Pb).

For game ideas and subjects, see [here](https://github.com/erelsgl-at-ariel/projects-5783/tree/main/games).

See [timetable](timetable.md).
45 changes: 45 additions & 0 deletions games/README_he.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
<div dir='rtl' lang='he'>


# פיתוח משחק מחשב רציני - חינוכי או מחקרי

בשנים האחרונות, משחקי מחשב משמשים לא רק להנאה אלא גם למטרות "רציניות"
כגון למידה או קידום המחקר.
לפרטים ראו [Serious games](https://en.wikipedia.org/wiki/Serious_games).

מטרת הפרוייקט היא לפתח משחק חינוכי או מחקרי.
לשם כך צריך לדעת שני דברים:

* לפתח משחקי מחשב - כמו שלומדים בקורס [פיתוח משחקי מחשב](https://github.com/gamedev-at-ariel/gamedev-5782).
* לחקור לעומק את הנושא שעליו כותבים משחק - כדי שהמשחק שלכם אכן ילמד את הדברים הנכונים. לשם כך יש להתייעץ עם מומחים בתחום.
* לעשות ניסוי עם שחקנים אמיתיים - כדי לוודא שהמשחק אכן מלמד.
* **[לוח זמנים מפורט נמצא כאן](timetable.md)**.



## רעיונות למשחקים

[אפשר לקבל רעיונות ממשחקים שכתבו סטודנטים בשנים קודמות](past-projects.md).
הנה עוד כמה רעיונות:

1. ניהול סכסוכים: אתם מגיעים לעיר שבה כולם מסוכסכים עם כולם. אתם צריכים לדבר איתם ולגרום להם להשלים ביניהם [להתייעץ עם מומחים בניהול סכסוכים].
1. שליטה ברגשות: השחקן הוא ילד. קורים לו דברים שמעוררים בו רגשות כמו: כעס, שיעמום, עצב. הוא צריך
ללמוד לשלוט ברגשות ולעשות דברים שיעזרו לו להתמודד איתם. [להתייעץ עם מומחים לילדים / תבונה רגשית].
1. גידול תינוק: השחקן הוא אב/אם טרי/ה שצריך לטפל בתינוק שעכשיו נולד, עד שהוא גדל.
1. הישרדות בטבע: שמים אתכם בטבע ואתם צריכים לשרוד בעזרת ליקוט צמחי-בר (אמיתיים). יהיו כמה שלבים, כל שלב קשור לאיזור אחר בארץ, עם צמחי-בר שונים. מידע על ליקוט: https://likut.co.il
1. תזונה: צריך לאכול מאכלים מאוזנים כדי לשמור על הבריאות.
[להתייעץ עם מומחים לתזונה].
2. אילוף כלב: אתם מקבלים כלב וצריכים לאלף אותו לעשות כל מיני דברים [להתייעץ עם מומחים לאילוף כלבים].
3. טיפול בגינה: אתם מקבלים גינה, צריכים לשתול בה צמחים מסוגים שונים, ולטפל בכל צמח בצורה שמתאימה לצמח, כדי שיהיו לכם מספיק ירקות טריים לכל השנה. מידע רב על צמחים מסוגים שונים ניתן למצוא כאן: https://www.organi-co.co.il או להתייעץ עם גננים.
4. לימוד תיכנות: משחק בסגנון אודיסיאה רובוטית - https://www.robotodyssey.online , אבל במקום מעגלים לוגיים, אפשר לשלב תיכנות בשפות שונות.
5. ידיעת הארץ: משחק בסגנון כרמן סנדייגו רק בארץ ישראל. צריך למצוא גנב נמלט שעובר מיישוב ליישוב, ותוך כדי זה לומדים על יישובים בארץ.
6. תפעול מכשירים חשמליים: יש לכם מכונת כביסה / תנור / מזגן וצריך ללמוד איך להפעיל אותם בלי תקלות / בלי להתחשמל (טוב גם כדי לחנך ילדים לזהירות בחשמל).
7. לימוד הסטוריה: בחרו תקופה הסטורית שמעניינת אתכם, ובנו משחק שהעלילה שלו מתרחשת בתקופה זו. דוגמאות: Empire Earth, 1979 revolution black friday.
8. מקצוע מעניין: בחרו קרוב-משפחה או מכר שיש לו מקצוע מעניין, דברו איתו ונסו לברר איך אפשר ללמד את המקצוע הזה במשחק.
1. לימוד תנ"ך וטקסטים אחרים:
בעבר כתבתי משחק בשם
[טקסטיה](http://tora.us.fm/quest/world/land.php?title=%D7%9E%D7%A9%D7%97%D7%A7%3A%D7%98%D7%A7%D7%A1%D7%98%D7%99%D7%94%2F%D7%90%D7%A8%D7%A5-%D7%94%D7%9E%D7%A7%D7%A8%D7%90) ([קוד המקור](https://github.com/erelsgl/textia)),
משחק-רשת מרובה-שחקנים ללימוד תנ"ך וטקסטים אחרים, הכולל יצירה אוטומטית של שאלות מתוך אתר ויקיטקסט.
אפשר לכתוב משחק בסגנון דומה, אבל מעוצב מחדש כמו משחק אמיתי.


23 changes: 23 additions & 0 deletions games/timetable.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Educational computer game - timetable

The project includes 10 milestones; each milestone is worth 5% of the final grade.

1. Designing the player experience. Based on lecture #1. Details [here](https://github.com/gamedev-at-ariel/gamedev-5783/blob/main/01-design-inspiration/yourgame.pdf). Due by 15/10/23.

2. Designing the formal elements. Based on lecture #2. Details [here](https://github.com/gamedev-at-ariel/gamedev-5783/blob/main/02-design-formal/yourgame.pdf). Due by 15/11/23.

3. Getting initial feedback. Details [here](https://github.com/gamedev-at-ariel/gamedev-5783/blob/main/03-unity-basics/yourgame.pdf). Due by 15/12/23.

4. Implementing the core game loop in Unity. Based on lectures 3,4,5. Details [here](https://github.com/gamedev-at-ariel/gamedev-5783/blob/main/05-unity-physics/yourgame.pdf). Due by 15/1/24.

5. Adding dramatic elements. Based on lecture 6. Details [here](https://github.com/gamedev-at-ariel/gamedev-5783/blob/main/06-design-dramatic/yourgame.pdf). Due by 15/2/24.

6. Programming the starting procedure and tutorial; building the game world. Based on lectures 7,8. Details [here](https://github.com/gamedev-at-ariel/gamedev-5783/blob/main/07-unity-tilemap-algorithms/yourgame.pdf). Due by 15/3/24.

7. Designing the dynamic elements; playtesting your game. Based on lecture 9. Details [here](https://github.com/gamedev-at-ariel/gamedev-5783/blob/main/09-design-dynamic/yourgame.pdf). Due by 15/4/24.

8. Fine-tuning your game. Based on lecture 11. Details [here](https://github.com/gamedev-at-ariel/gamedev-5783/blob/main/11-design-tuning/homework.pdf) and [here](https://github.com/gamedev-at-ariel/gamedev-5783/blob/main/12-final-touch/yourgame_final.pdf). Due by 15/5/24.

9. Playtesting with real players from the target audience. Due by 15/6/24.

10. Writing a report based on the playtest results. Due by 15/7/24.
11 changes: 11 additions & 0 deletions opensource/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# Implementing algorithms for open-source projects

In these projects, you will implement novel algorithms from research papers, compare their performance in simulations, and integrate them into open-source projects. Why is it good for you?

1. During your studies, you solve tasks where you write new code. But in work, you will probably need to integrate into existing code, which is much more complex. Contributing to an open-source system gives you a chance to practice this important skill.
2. Open-source systems are managed by veteran experienced programmers. Contributing to such systems lets you work with these programmers and learn from their experience.
3. The code you write in these projects will be actually used by many people around the world.
4. Your name will appear as contributors to the system; this will substantially contribute to your CV.

See [timetable](timetable.md).

30 changes: 30 additions & 0 deletions opensource/timetable.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<div dir='ltr' lang='en'>

# Open-source projects - Time Table

There are 10 milestones. The grade for each milestone is 5%:

0. Find an open-source library, initiate a discussion with the developers to make sure they want your contribution. Due by 15/10/23.

1. Choose a paper and summarize it in your own words; see details [here](https://github.com/erelsgl-at-ariel/research-5783/blob/main/02-research-start/homework.pdf). Due by 15/1/23.

2. Create detailed running examples; see details [here](https://github.com/erelsgl-at-ariel/research-5783/blob/main/04-research-examples/homework.pdf). Due by 15/2/23.

3. Fork and clone; write headers and unit-tests. See details [here](https://github.com/erelsgl-at-ariel/research-5783/blob/main/06-python-development/homework.pdf). Due by 15/3/24.

4. Write a complete implementation of the algorithm. Be sure to test it thoroughly. See details [here](https://github.com/erelsgl-at-ariel/research-5783/blob/main/08-research-implementation/homework.pdf). Due by 15/4/24.

5. Compare algorithm performance to existing algorithms. Due by 15/5/24.

6. Improve the performance of the algorithm; analyze the effect of improvements. See details [here](https://github.com/erelsgl-at-ariel/research-5783/blob/main/10-python-performance/homework.pdf). Due by 15/6/24.

7. Submit a pull-request to the library. See details [here](https://github.com/erelsgl-at-ariel/research-5783/blob/main/12-python-publishing/homework.pdf). Due by 15/7/24.

8. Make sure your pull-request is merged into the library, by solving all issues and tests. Due by 15/8/24.

9. Write a website for demonstrating your algorithm. See details [here](https://github.com/erelsgl-at-ariel/research-5783/blob/main/11-python-web/homework.pdf). Due by 15/9/24.

10. Write a report summarizing your experiments. Due by 15/10/24.


</div>
11 changes: 11 additions & 0 deletions research/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# Developing a new algorithm

In this project, you will develop an entirely new algorithm, for solving a new problem. This sounds scary, but you will not be alone - we will develop the algorithm together, step after step. At the end, you will publish a paper describing your algorithm, and (if you want and the paper is accepted) present it in an international conference.
The algorithms I work on are related to fair division:

1. Fair random assignment of tasks, taking into account the previous assignments.

2. Allocation of items, that is egalitarian up to at most one item.

3. Fair media: automatic detection of bias in newspapers (requires knowledge in NLP and machine learning).

18 changes: 18 additions & 0 deletions research/timetable.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<div dir='ltr' lang='en'>

# Developing a new algorithm - Time Table

There are 5 milestones. The grade for each milestone is 10%. The dates may change based on the schedule of the relevant conferences.

1. Read and understand relevant papers. Due by 15/11/23.

2. Develop and write algorithm. Due by 15/1/24.

3. Write paper; submit for publication. Due by 15/3/24.

4. Get replies; make corrections; resubmit. Due by 15/5/24.

5. Prepare presentation; present in a conference. Due by 15/7/24.


</div>

0 comments on commit f08e1ca

Please sign in to comment.