Skip to content

Mehmet Batuhan Çelik

mbatuhancelik edited this page Oct 10, 2022 · 16 revisions
Hello! I am Batuhan Çelik, a computer engineering junior at Boğaziçi University. Regarding my experience, I worked at Nokia as a TCP/IP automation intern, worked as a telecommunication engineer for 3 weeks, and learned full stack development and networking. Then I moved on to Atlassian where I developed a microservice for Jira integration of OpsGenie. Upon that I participated in UskaLab, performing Bitcoin volatility prediction using DNNs. Finally, I joined CoLoRs lab as a research intern under TUBITAK Star program. Currently working on robotic cognition.



Github Username: mbatuhancelik


Skills and Interests

Skills

Python

TensorFlow NumPy

Java

C++

LaTeX

Linux

Interests
  • State of art technologies
  • Jet Engines
  • Japanese culture, and society
  • Music(Guitarist myself)
  • Roman history

Contact Information

  • GitHub
  • Bahrican's Linkedin
  • Mail Address

CMPE 451 Weekly Work

CMPE 352 Weekly Work

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.

Report About Git Research

Report:

Git is developed by a kernel developer in 3 weeks ⇒ ITS COMPLICATED

How does git work:

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.

Branches:

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.

Merging:

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.

Tags:

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.

Working Together

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.

Why git is so efficient

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/

Git repos I liked

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

User interaction

Glossary for this part

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

User-User Interaction

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

User-Lecture Interaction

Creating Lectures

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”.

Editing lectures

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

Taking lectures

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.

Note Taking

Users shall create notes.

Notes shall linked to each other.

Users shall annotate lecture content by matching them to notes.

Browsing Experience

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.

Questions

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?

TODO

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

What is Semantic Search and why it is useful?

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.

How does it work?

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.

Sources:

https://www.bloomreach.com/en/blog/2019/semantic-search-explained-in-5-minutes

https://www.youtube.com/watch?v=d_6ZNyV1MvA

W3C Web Annotation Model Research

W3C Annotation Model Research

What is W3C

World Wide Web consortium is an international community aiming to standardize the web to ensure its long term growth.

What is annotating

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.

Purpose of the annotation model:

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.

Method

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

Sources

https://www.w3.org/TR/annotation-model/

https://w3c.github.io/web-annotation/model/wd/#diagrams-and-examples

Rival Analysis: Coursera

Primary Purpose

Providing quality upper education from renown experts to students around the globe and certificate their students expertise. Their main objective is to increase accessibility.

Features

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.

Pricing

While an account is free, pricing policy is up to lecturer. There are free lectures too!

Languages

Lecturers can deliver lectures in their prefered language. Most popular languages are English, Spanish, Chinese

Mobile

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.

👋 Welcome to the Wiki of Group #2

🎓 Group Members

Group Members

✍️ Meeting Notes

Meeting Notes of 451
Mobile Team Meeting Notes
Back-End Team Meeting Notes
Front-End Team Meeting Notes
Meeting Notes of 352

📚 Learnify

📱 Practice App

🛣 Milestones

CMPE451 Milestones
  • Will be added when ready
CMPE352 Milestones

📋 Requirements

🕵 Researches

Git Related

🖼️ Scenarios & Mockups

Scenarios

📈 Diagrams

Diagrams

📑 Templates

Templates
Clone this wiki locally