-
Notifications
You must be signed in to change notification settings - Fork 8
Mehmet Batuhan Çelik
Github Username: mbatuhancelik
Skills
Interests
- State of art technologies
- Jet Engines
- Japanese culture, and society
- Music(Guitarist myself)
- Roman history
Journal
Week 1
Task | Duration | Type | Link (optional) |
---|---|---|---|
Attended to the first meeting with the team | 1h 15m | Meeting | Corresponding Issue |
Created the personal wiki page | 30 minutes | Documentation | Personal Wiki Page |
Created the template for personal wiki pages | 45 minutes | Documentation | Personal Information Template |
Researched about how to use git and how git works internally | 4 hours | Research | Git Research Wiki Page |
Researched some GitHub repos | 1.5 hour | Research | Git Repos Wiki Page |
You can find a summary of what I presented to my group last week.
Git is developed by a kernel developer in 3 weeks ⇒ ITS COMPLICATED
When you initiate a repo and add a file to git, git starts to watch secondary memory write operations regarding that file. Git stores all operations line by line for each file in a binary object. When changes are committed a commit object is created using this binary object. Each commit object points to a (in terms of merge commits two) previous commits, constructing a acyclic directed graph. In addition to previous links, each commit object has an unique ID that is summation of content, author, date, log, previous commit encrypted in SHA-1. Thus, comparing two commit objects is O(1) operation.
Using these 3 design choices, one can construct the all files watched by git using commit objects. To do so:
⇒ Navigate to the designed commit object, since all commit objects are stored in secondary storage with an unique ID, as long as ID is known, this is just a lookup
⇒ Go to previous commit, and continue going to parents until you find the first commit, or the current commit object.
⇒ Gather file change data stored in the commit objects
⇒ Execute the file changes again
Thus, any stage with known commit id can be reconstructed in a fast manner. By doing so git can store changes changes made in parallel and reconstruct files at any commited point of time. By doing so it can provide version control system service.
Each git repo has a main thread of commit objects named ‘master’ or ‘main’. When programmers want to develop several features in parallel, for the sake of abstraction, dividing threads is beneficial. Instead of creating new repos, git introduces branching operation which creates a new thread of commit objects that diverges from master thread to be merged later. Each of these 2 threats store a stage of source code that are different but comes from a common ancestor. Programmers can jump between branches to develop different features, at each jump git will reconstruct watched files to restore branches state. When features are done, branches can be merged together to produce the final source code.
When development of different branches end, they need to be combined to finalize the source code, aka merged. Lets assume we want to merge commits A and B. Since git stores commit objects in an acyclic graph that originates from a single point, A and B commit objects must have a common ancestor which can be found by shortest path algorithms or a simple BFS. By tracing from A to common ancestor and collecting all the changes made during development of A branch can be collected. By applying these changes to B, A and B is merged. Notice that Git stores changes line by line. If the same line is changed during development of both A and B, a merge conflict occurs. To resolve this a programmer should check the both lines from A and B and decide on one of them or write a new line to replace the both.
You can add tags to branches to indicate their properties. Tags differ from branches by being static while branches point to their last commit objects.
By sharing commit object graphs, one can ensure that every one using that graph has the same source code. Today, by synchronizing our graph to a server we can work with thousands of other developers! To do so git stores remote partners with different tags most common being the origin. When the origin commit graph and our commit graph is synchronized, both partners store a tag for others last commit. Once the next synchronization begins, the receiving side checks if its in the last synchronization point. If it is, sending side’s commit objects are accepted. If it is not, receiver asks sender to merge the changes made in receiver to push their changes.
Since all comparable commit data is hashed in a single hash to generate a commit ID, comparing commits is an extremely fast operation.
It uses an simple and intrinsic database management system to store and access the commits.
It only stores minimal changes in files, not the whole files
Comparing remote commits to local commits are done by only sending the commit ID’s over the network
Sources:
Git for ages 4 and up: https://www.youtube.com/watch?v=1ffBJ4sVUb4
Advanced Git : www.raywenderlich.com/books/advanced-git/
Pytorch is a powerful open-source deep learning library for python based on torch used in research, industry, and teaching.
In their repository, hey they have a very detailed readme including a detailed introduction, installation guide, and build status. Even though its quite long, its well organized and accessing the content is easy with the readme. Moreover, there is a even more detailed wiki. Wiki begins with an “best practices” page for wiki entries to standardize the wiki pages and it includes an “how to contribute” guidebook to facilitate the open source contribution. In addition, they stated linting rules to standardize the source code in the wiki too. Besides these, the wiki explains design plan and library usage in a well structured manner. Even tough they use github issues for issue management, labels are not well maintained, yet they address the issue and fixing efforts in the wiki.
Parse server is an backend package runnable on Node.js enabled environments based on express.js
They have wonderful issue management with well documented issues and sufficient but not many labels with an intuitive color code. Their detailed readme contains all the required information to getting started like build status, compatible technologies, and possible use cases complemented by external links. In addition, implementation details and contribution guide is well documented in the wiki.
Week 2
Task | Duration | Type | Link (optional) |
---|---|---|---|
Attended to the second meeting with the team | 2 hours | Meeting | Meeting Notes |
Determined User Interaction Requirements under User Requirements | 2 hours 30 minutes | Documentation | Corresponding Issue |
Semantic Search Research | 1 hour 30 minutes | Documentation | Corresponding Issue |
W3C annotation Model Research | 1 hour 30 minutes | Research | Corresponding Issue |
Research regarding Competitors | 1 hour | Research | Corresponding Issue |
You can find reports I presented this week bellow.
User Interaction Requirements
Lecturer: The user created a lecture is its “lecturer” and a lecturer for an lecture may be a regular user for other.
Section: Basic, indivisible part of lecture content corresponding to a subchapter of a textbook.
Chapter: Group of sections under a lecture.
Poll: Some set of questions in sections asked to users in lectures. There are 3 types of polls:
- quiz : user shall answer questions correctly to move on to the next section
- multiple answers: a user can choose more than one answer
- anonymous: only distributions of answers will be visible to the lecturer
Users shall see each others profiles.
Users shall be able to track each other.
Users shall see information regarding people they track such as tracked persons profile, achievements, favourite lectures, and activities.
Users shall share notes with each other.
Users shall be able to organize meetings by specifying 3 fields:
- duration
- place
- date
Lecturers should assign co lecturers
Lecturer shall state the lectures topic.
Lecturers shall create “sections” under lectures.
Sections shall deliver lecture material in text, visuals, and embedded videos.
Lecturers shall be able to edit material in sections in an online, in-platform editor.
Lecturer should be able to group sections under “chapters”.
Lecturer shall be able to edit lectures by adding new sections or/and chapters
Lecturer shall be able to edit existing sections
Lecturer should be able to set his/her lecture as private, public, or protected
Lecturer should be able to set his/her sections as private, public, or protected
User shall see the content within sections as lecture intended.
Users shall navigate between sections.
Users shall see which sections they completed clearly.
Users shall be notified type of the poll they are taking beforehand.
Users shall receive confirmation of their expertise on the topic upon completion of a lecture.
Users shall be able to grade lectures.
Lectures shall include a communication channel where user can interact with other users and the lecturer. This channel is to be defined.
Users shall create notes.
Notes shall linked to each other.
Users shall annotate lecture content by matching them to notes.
Users shall browse lectures specifically recommended to themselves.
Users shall search and sort lectures according to lecture’s:
- Lecturer
- Subjects
- Name
- Rating
Users shall search for each other using their names and their expertise.
Must lectures include some sort of video?
Have to we include videos/video-conferences in the app?
Can the app be without videos?
If it has to include some videos, can we use web-view, embedded video views and so on?
Define note taking system: My proposition would be a OneNote style note taking system with notebooks and pages that has the same order with chapters and subchapters of lectures with markdown as editing system.
Define how students and lecturer are going to communicate: shall we implement a reddit like community under lectures?
Define how lecturers will edit sections: an extended markdown maybe?
Semantic Search Research
Semantic search corresponds to searching with meaning. It intends to determine the intent and contextual meaning of the words used for a search.
Intent consists of several factors like users search history and location.
In our conversations, we depend on contextual elements like time, location, partner’s background knowledge, and depth of relationship. Like us, semantic search tries to understand the query using contextual elements. Thus, we can search while using a human-like language.
It is shown that average user has a better searching experience while semantic search is used compared to lexical search which only matches words. Its especially helpful when users are browsing your products and not looking for a specific piece of information. Moreover, Personalized experience of semantic search adds an incredible value to advertisement.
The internet consists of many websites and every single one of them stores its content in a different manner. In addition to that, data easily understandable by humans like videos and articles has no structure for a computer to analyze. That is the main challenge of semantics search: processing and ordering unordered data which makes zero sense to computers.
At the early days of semantic search, developers were expected to provide semantic mappings embedded in their websites. So that, search engines could analyse semantic mapping of the query and match it with web data. This would in the end result in creating a semantic map for every single piece of data in the Internet. Imagine all those wasted hours of human life!
Thankfully with the upcoming boom of machine learning, developers were released of the burden. Rapidly developed natural language processing technology is able to generate contextual map of articles, whereas, voice recognition, and computer vision techniques are able to understand videos. Thus, by combining all of these results, semantic map of a website can be generated by another machine learning algorithm.
Now that context of every website ever is known, we just need to match them to the users query. To do so, users search is also gone through semantic analysis performed by another NLP algorithm and websites matching users query are found and they are sorted by using the users previous searches, popularity, location, and some other factors.
As you can guess, this state of art semantic search process is extremely computation expensive. Thus, its beneficial to use a cloud service to perform semantic search for those who can not afford that much computation. Luckily there are some cloud services like Azure provide this service for data the user wishes.
https://www.bloomreach.com/en/blog/2019/semantic-search-explained-in-5-minutes
W3C Web Annotation Model Research
World Wide Web consortium is an international community aiming to standardize the web to ensure its long term growth.
W3C defines annotation as associating pieces of information. Annotating is a pervasive activity in web: any comment, rating, review, and etc. submitted on any piece of web content can be considered annotation. In addition there is a lot of notetaking systems that can annotate web content.
Thus, there is a plethora of annotation systems in the web.
To standardize annotations on the web so that annotations can be used, shared, and reused across various software and hardware. Thus, users can share their annotations or use their annotations in multiple devices.
By providing an annotation data model, annotation metadata is standardized.
This is achieved by specifying a JSON-LD(another W3C standard to serialize linked data in JSON files) file to store annotation metadata. The metadata consist of annotation’s creator, content, and most importantly a link to the annotated content and a link to the annotating content. By gathering this information, annotation can be regenerated and be presented to user in desired format
https://www.w3.org/TR/annotation-model/
https://w3c.github.io/web-annotation/model/wd/#diagrams-and-examples
Rival Analysis: Coursera
Providing quality upper education from renown experts to students around the globe and certificate their students expertise. Their main objective is to increase accessibility.
Students can search lectures by lecturer, institute, rating, topic, language, and difficulty.
Their lectures mostly are conducted by renown experts, companies or academicians. Some companies offer courses for their current or future employees.
They provide a certification upon completion.
By grouping lectures together, they offer specializations and even online college degrees.
Lectures follow a chapter/section type hierarchy.
Lectures are supported by projects which are tested. Projects mostly consist of coding. Coursera runs this code on their server and grade them by behaviour. This is especially helpful for machine learning and data science subjects since they supply required processing power and datasets the learner may not have.
Understanding of lectures are tested by quizzes. Passing the quiz is required for completion and certification.
Students can track completion process of lectures individually. There are some lectures with deadlines too. The system alerts users when a deadline is close.
Lecturers can add both a video or text as lecture material.
Students can annotate lecture material or take notes using the notes service. Each section of each lecture has a separate notes page. Student can navigate between his/her notes while viewing lecture material.
Students can annotate videos by screenshoting using a button in video player. This button takes a screenshot of the lecture video and add it to class notes.
Students can see the transcript of lecture videos. When the user clicks on a sentence in the transcript, video player jumps to the timestamp of the sentence. Since transcripts are generated by AI, they are quite frequent in lectures delivered in popular languages.
Students can use transcripts for annotation, thus they can quote lecturers easily.
Each section has a separate forum for discussion where students can start new threads for different topics.
Users have LinkedIn like profiles where learners can present their skills/certificates/experience for the employers.
They have a career paths section where they introduce technical career paths and courses recommended for starting these careers.
While an account is free, pricing policy is up to lecturer. There are free lectures too!
Lecturers can deliver lectures in their prefered language. Most popular languages are English, Spanish, Chinese
Play Store : 4.1/5
App Store: 4.8/5
Week 3
Task | Duration | Type | Link (optional) |
---|---|---|---|
Attended to the third meeting with the team | 2 hours | Meeting | Meeting Notes |
Determined Lecture Requirements | 2 hours | Documentation | Corresponding Issue: 39 |
Unregistered Learner Scenario | 1 hour 30 minutes | Scenario | Corresponding Issue: 47 |
Week 4
Task | Duration | Type | Link (optional) |
---|---|---|---|
Attended to the fourth meeting with the team | 1.5 hours | Meeting | Meeting Notes) |
Revise User Interaction Requirement | 1 hours | Documentation | Corresponding Issue: 62 |
Revise Lecture Requirements | 1 hour | Documentation | Corresponding Issue: 63 |
Review Issues 60 61 66 67 | 30 minutes | Documentation | 60/61/66/67 |
Week 5
Task | Duration | Type | Link (optional) |
---|---|---|---|
Attended to the regular meeting with the team | 2.5 hours | Meeting | Notes are not added to the wiki yet |
Attended to the use case diagrams meeting with the team | 3 hours | Meeting | Meeting Notes |
Attended to the class diagram meeting with the team | 2 hours | Meeting | Notes are not added to the wiki yet |
Issue management for non course related use cases | 1 hour | System Design | #70 |
Use Case diagram for authentication | 2 hours | System Design | #72 |
Class diagram for Chat | 1.5 hours | System Design | #105 |
Class diagram for Course | 3 hours | System Design | #91 |
Sequence diagram for Chat: Sending message | 2 hours | System Design | #114 |
Reviewing Lecture Admin Class Diagram | 20 minutes | System Design | #99 |
Reviewing Enrolled Actions Class Diagram | 40 minutes | System Design | #100 |
Sums up to 18 hours!
Week 6
Task | Duration | Type | Link (optional) |
---|---|---|---|
Attended to the regular meeting with the team | 2.5 hours | Meeting | Notes are not added to the wiki yet |
Attended to the sequence diagrams meeting | 2.5 hours | Meeting | Meeting 6.1 |
Reviewing sequence diagram for Chat: Sending message | 1 hours | System Design | #114 |
Creating R.A.M | 2.5 hours | Project Planning | #123 |
Filling R.A.M | 1.5 hours | Project Planning | #129 |
Weeks 7 8 9
This was the point everything in my curriculum collided and sadly I forgot to write my weekly efforts for a month.
You can find them in a cumulative way bellow, in a chronological order.
Task | Duration | Type | Link (optional) |
---|---|---|---|
Attended to the meeting 6.1 with the team, I was the notetaker for this meeting | 2 hours | Meeting | Meeting Notes |
Attended to the meeting 7 with the team | 2 hours | Meeting | Meeting Notes |
Added requirements to milestone report and wrote evaluation about them | 1 hours | Meeting | #142 |
Attended to the meeting 8 with the team | 1 hour | Meeting | Meeting notes are not added yet. |
Week 10
Task | Duration | Type | Link (optional) |
---|---|---|---|
Attended to the meeting 9 with the team | 2 hours 5 minutes | Meeting | Meeting Notes |
Studied Node.js for practice app | 10 hours | Studying | No issue created for this task |
Reviewed PR request for base setup of practice app backend | 20 minutes | Reviewing | PR request |
Implemented Category Model for practice app backend | 1 hour | Implementing Feature | #163 |
Implemented POST /api/category endpoint | 7 hours | Implementing Feature | #165 |
Implemented GET /api/category endpoint | 1 hour | Implementing Feature | #167 |
Time spend on POST /api/category may seem superficial but this was my first JS experience and instead of implementing createCategory function, I tried to add a filter to mongoose to apply required wikipedia API searches automatically. This resulted in lots of issues who still haunt me in my dreams.
Group Members
Meeting Notes of 451
Mobile Team Meeting Notes
Back-End Team Meeting Notes
Front-End Team Meeting Notes
Meeting Notes of 352
- Meeting #1 (04.03.2022)
- Meeting #2 (10.03.2022)
- Meeting #3 (17.03.2022)
- Meeting #4 (24.03.2022)
- Meeting #5 (31.03.2022)
- Meeting #5.1 (02.04.2022)
- Meeting #5.2 (05.04.2022)
- Meeting #6 (07.04.2022)
- Meeting #6.1 (12.04.2022)
- Meeting #7 (14.04.2022)
- Meeting #8 (21.04.2022)
- Meeting #9 (01.05.2022)
- Meeting #10 (12.05.2022)
- Practice App Requirements
- Practice App Use Case Diagram
- Practice App Sequence Diagram
- Practice App API Documentation
CMPE451 Milestones
- Will be added when ready