Archive
The project ‘gfs’ (GNU Find String).
Within the framework of the course “Operating Systems I – Laboratory” (Department of Informatics and Communications, T.E.I of Serres) we were asked to choose one of 25 available projects aiming to implement and then present to the entire class. My choice was project 17, whose goal was the implementation of the external ‘find’ command of the operating system MS-DOS.
Arduino: Light Indicator with multi-LED bar graph and light sensor.
This project refers to an Arduino sketch that implements a light indicator with the help of an external sensor (photoresistor) for the recognition of light, and a bar graph of many LEDs used as a rating indicator. Furthermore, if the indicator reaches the last rating which indicates that there is “perfect” light (the maximum light that the sensor can identify) then it plays a melody with a piezo speaker located in the system.
Arduino: Alarm clock with light sensor and ON / OFF buttons.
This project refers to an Arduino sketch that implements a simple alarm clock using a light sensor, a piezo speaker, two buttons for functions such as ON, OFF and an LED as the function indicator. When the alarm is in OFF state, then it carries no real operation (just turns off the function indicator), and when in ON state, then it turns on the function indicator and examines whether there is sufficient ambient light (via the light sensor) to produces a musical tune with piezo speaker. This process is repeated continuously if there is sufficient light until the button OFF is pressed.
Arduino: Embedded Arduino Web Controller.
This project refers to an Arduino sketch that implements an Arduino Web Controller. Basically, the Arduino works as a network device that can be configured either locally or remotely by a special WEB interface. This technology is not new as it exists in other network devices. For example, routers or network printers are configured through a WEB interface.
Arduino: Sending measurements from light sensor to Twitter via the Internet.
This project refers to an Arduino sketch which has the capability to send measurements collected by a light sensor to an account at Twitter to be seen by many through the World Wide Web.
Arduino: Device Control (open / close) using a light sensor and a relay.
This project refers to an Arduino sketch which with the help of a relay (electromechanical switch) and a light sensor can drive an external device (e.g. a household lamp, a car alarm, a home air conditioner). More specifically, the Arduino collects samples from a light sensor at a specific rate and calculates the mean of samples for best accuracy. Then, if the average exceeds a threshold limit, it will activate the device via the relay. Also, the opposite happens where, if the average sensor value drops below the limit mentioned, the device is turned off.
Arduino: LEDs animations controlled by a button.
This project refers to an Arduino sketch which is used to produce animations with more than one LED. You can place several LEDs in a row or in any order you wish and enjoy the flow of traffic. Furthermore, if you wish to change the animation you can choose the next in line by pressing a special button. One such application might remind you of the Christmas lights.
The project ‘parkman’ (Parking Manager).
Within the framework of the course “Software Engineering I – Laboratory” (Department of Informatics and Communications, T.E.I of Serres) we developed as a semester assignment a parking management application.
Both the graphical user interface (GUI) and the application are implemented with Qt in C++. Specifically, with this application, the end user can manage a variety of customers, customer cards, vehicles, transactions, parking, vehicle fees, etc.
The project ‘tct’ (The Crime Tracer).
The project ‘tct ‘(The Crime Tracer) is an online adventure police game. Of course it has not yet implemented because it is under development. The game is a free software initiative of two volunteers who love and respect science and the freedom of users. Anyone can join the project as a volunteer, provided they are good-willed and have some free time. Also, the game is being developed using the Python programming language and the Pygame framework.
The project ‘shell-library’ (Shell Function Library).
The project ‘shell-library’ (Shell Function Library) is a developers’ effort to develop a free shell library with POSIX general purpose functions. The functions that the library offers can be used within shell scripts developed to automate the work of your operating system.
The project ‘bgc-speaker’ (Handling BGC-8088′s Speaker).
Within the framework of the course “Computer Architecture – Laboratory” (Department of Informatics and Communications, T.E.I of Serres), I felt the wish to develop a program that produces sound from the BGC-8088′s speaker.
The project ‘bgc-leds’ (Handling BGC-8088′s LEDs).
Within the framework of the course “Computer Architecture – Laboratory” (Department of Informatics and Communications, T.E.I of Serres), I felt the wish to develop a program that flashes in a sequential manner the light-emitting diodes of the development platform BGC-8088.
The project ‘equation-solver’ (Equation Solver).
Within the framework of the course “Computer Architecture – Laboratory” (Department of Informatics and Communications, T.E.I of Serres) we were asked to choose one of the available projects in order to implement it. My choice was project 1, whose aim was to implement a program that can solve single variable equations of first degree of the form ax + b = 0.
The project ‘nxnes’ (NxN Equalisations Solver).
The project ‘nxnes’ (NxN Equalisations Solver) is the implementation of project 5 from the list of selected projects in the course “Operating Systems II – Laboratory” (Department of Informatics and Communications, T.E.I of Serres). The objective of this project was the implementation of the Gauss Elimination Method to solve a NxN system of linear equations.
The project ‘gdr’ (GNU Diary Reminder).
Within the framework of the course “Operating Systems II – Laboratory” (Department of Informatics and Communications, T.E.I of Serres) we were asked to choose one of the 20 available projects to achieve. My choice was project 10, whose goal was to implement a birthday and celebrations alert system.
The project ‘OSHACKERS’ (Operating System Hackers).
The project ‘OSHACKERS’ (Operating System Hackers) and the website ‘oshackers.org‘ refer to a safe, free, friendly and useful to the end-user online web system for visualising information related to the various users of the various free and open operating systems around the world.
The project ‘vs-cms’ (Very Simple Content Management System).
The project ‘vs-cms’ (Very Simple Content Management System) is a personal project and a web content management system. The project was designed and implemented to meet the needs of the online web presence of project ‘IXTHIS‘ (Jesus Christ, Son of God, Savior).
The project ‘IXTHIS’ (Jesus Christ, Son of God, Savior).
The ‘IXTHIS’ project and especially the ‘ixthis.gr‘ website is a humble non-for-profit attempt of Orthodox presence issued “for the glory of God”. We would like to inform you that the website of the project ‘IXTHIS’ arose from the desire of several friends to share some popular articles and important texts related with Orthodoxy and especially with the theological aspect of social issues.
The project ‘www-el’ (Hellenic GNU Web Translations).
The project ‘www-el‘ (formerly ‘elwebtrans’) serves to translate all the important articles, texts (web pages) of the GNU Project in the Greek language. All members of the project ‘www-el‘ are volunteers who contribute their work to spread the GNU Project and the philosophy of the Free Software Foundation in the Greek public. If you have some free time and want to contribute to the defense of liberty and the further dissemination of Free Software, help our project.
The project ‘clg’ (Cell Life Game).
Within the framework of the course “Operating Systems II – Laboratory” (Department of Informatics and Communications, T.E.I of Serres) we developed as a semester assignment an application whose aim was to simulate the evolution of a colony of single-celled organisms, namely the creation of the famous game of life.
Resource Manager in Python & Pygame with Caching and Mapping.
The project ‘tct‘ (The Crime Tracer) fanned my wish to create a resource manager for the needs of the game. Generally, a resource manager increases efficiency in most cases because it uses internal caching and mapping. The resource manager of the project ‘tct‘ is written in Python and manages graphics, sounds and Pygame fonts.
The project ‘YAFL’ (Yet Another Free Language).
This project refers to the development of the procedural programming language YAFL (Yet Another Free Language) as well as its interpreter. The programming language YAFL is a tool for teaching the basic principles of procedural programming to secondary school students and beginners in general.
Steganography System (Prototype).
The project “Steganography System” refers to an open-source steganography system which can be used to hide text in digital media formats (image, audio, video). Generally, steganography is the art of hiding a message in a way that its existence is only known to its recipient.
2D Sprite Animation & Movement Engine For ‘The Crime Tracer’.
The project ‘tct‘ (The Crime Tracer) made me wish to create an engine for moving various sprites in two-dimensional games. This engine is a prototype and is continuously optimized. It has also been developed with the help of Pygame and Python. Additionally, you can find a rough example that uses the engine of the project ‘tct‘ (The Crime Tracer).
The project ‘PGASystem’ (Parallel Genetic Algorithms System).
The project “PGASystem” (Parallel Genetic Algorithms System) is an under development system based on the client / server architecture and can be used to implement and study of parallel genetic algorithms.
TheHackerspace – Security & Arduino Workshop!
The first openSUSE collaboration weekend camp was held in Katerini on 15-17 July 2011. There was also a workshop according to the programme held by TheHackerspace on “Security & Arduino” which included the presentation of two embedded security systems both at hardware and software levels.
Implementation of breadth-first search algorithm in graphs.
The following function is applied onto a graph and it specifically implements the method of breadth-first search. To visit all nodes connected to node k of a graph, we put the k in a FIFO queue and then go into a loop, during which we get the next node from the queue and, if we have not already visited it, we visit it and push into the queue all nodes belonging to the adjacency list of this node, continuing this process until we empty the queue.
Implementation of an algorithm for creating a syntax tree.
The following program creates the syntax tree of a mathematical expression in prefix notation. For simplicity, we assume that the terms of the expression are individual characters (digits). Each time the recursive function parse() is called, a new node is created, whose value is the next character of the expression. If the value is a term (digit), we return the new node. However, if it is an operator, we set the left and right pointers to point the tree made (recursively) for the two operands.
Implementation of algorithms (without recursion) for preorder & level-order traversal of binary trees.
The iterative (non-recursive) function preorderTreeTraverse() can perform preorder traversing of a binary tree with the help of a stack that can hold pointers to nodes of the tree.
Also, the iterative (non-recursive) function layerTreeTraverse() can perform level-order traversing of a binary tree with the help of a queue that can hold pointers to nodes of the tree.
Implementation of algorithm for the calculating of prefix expressions.
To calculate a prefix expression, we either convert a number from ASCII to decimal (in the loop ‘while’ at the end of the program) or implement the operation indicated by the first character of the expressions to the two terms, with a recursive calculation. This function is recursive, but it uses a global array containing the expression and an index number for the current character of the expression. The index number goes beyond each sub-expression calculated.
Collection of useful recursive functions.
The elegant recursive solution to a problem is most of the times invaluable. Although the iterative solution of that problem is likely to have a better space and time complexity, it is often preferred to use the recursive version for clarity and simplicity. It is remarkable how easily a problem can be solved by use of a recursive manner. In this article we will try to record a collection of useful recursive functions:
Implementation of algorithm for converting an expression from infix to postfix notation.
The following program converts an expression from infix to postfix notation. The conversion is carried out with the help of a stack. For example, to turn the expression (A + B) into the postfix form A B +, we ignore the left parenthesis, convert the A to postfix form, we store the + operator on the stack, we convert B to postfix form and then, when find the right parenthesis, we pop the + operator from the top of the stack. In particular, the following implementation works only for the addition and multiplication of integers.
Implementation of algorithm for calculating a postfix expression.
The following program reads any postfix expression that includes integer multiplication and addition, evaluates the expression and displays the final result on the screen. The program stores the intermediate results in a stack of integers.
The terms (operands) are pushed onto the stack. The operators are applied to the two entries at the top of the stack (the two entries are popped from the stack); the result is pushed back into the stack. Because the order in which the two pop() functions are performed in the expression of this code is not specified in C++, the code for some non-commutative operators, such as the ones for subtraction and division, would be somewhat more complicated.
Implementation of an application for the sorting of an array of strings.
The following program demonstrates a significant processing operation on arrays of strings. More precisely, we present the re-sorting of a set of strings in order to classify them. So, we read the strings and place them in a temporary storage area (buffer) large enough to be able to store all, keeping in an array a pointer to each string. Then we re-sort the pointers (only pointers and not strings to increase the performance) to place the pointer to the “smallest” string at the first position of the array, the pointer to the next “largest” string at the second position of the array, and so on.
Implementation of graph representation with an adjacency list.
The following program reads a set of edges that define a graph and creates a representation of this graph with an adjacency list. The adjacency list of a graph is an array of lists, one for each vertex, where the j-th list contains a linked list of the nodes which are connected with the j-th vertex.
Implementation of graph representation with an adjacency matrix.
The following program reads a set of edges that define an undirected graph and creates a representation of this graph with an adjacency matrix, giving a[i][j] and a[j][i] the value of 1 if there is an edge from i to j or from j to i in the graph, or the value of 0 if it does not exist. Also, we assume that the number of vertices V is a constant known at compilation time. Otherwise, there should be dynamic memory allocation for the array that represents the adjacency matrix.
Implementation of string search algorithm.
The following program finds all the occurrences of a word in a text string. We set the text string as an array of characters of fixed size (although we could, instead, use the operator ‘new’) and read it from the standard input using the function cin.get(). The memory allocation for the word entered in the command line and passed on as argument is done by the system before this program is called and we find the pointer to the string in argv[1]. For every starting position i in the array a, tries to associate the substring starting from this position with the p, checking character by character for equality. Each time we reach the end of p successfully, we display the starting position (i) of the word in the text on the screen.
Differential Evolution – Example 5.
I quote below a personal portable implementation (in C++) of a classic Differential Evolution algorithm used to maximize the function f(x) = sin(x) in the domain 0 <= x <= 2pi. You can compile the program with the g++ compiler.
Genetic Algorithm – Example 4.
I quote below a personal portable implementation (in C++) of a classic genetic algorithm (evolutionary algorithm) used to maximize the function f(x, y) = sin(x) * sin(y) in the domain 0 <= x, y <= 2pi. You can compile the program with the g++ compiler.
Genetic Algorithm – Example 3.
I quote below a personal portable implementation (in C++) of a classic genetic algorithm (evolutionary algorithm) used to maximize the function f(x) = sin(x) in the domain 0 <= x <= 2pi. You can compile the program with the g++ compiler.
Genetic Algorithm – Example 2.
I quote below a personal portable implementation (in C++) of a classic genetic algorithm (evolutionary algorithm) used to maximize the function f(x) = sin(x) in the domain 0 <= x <= 2pi. You can compile the program with the g++ compiler.
Genetic Algorithm – Example 1.
I quote below a personal portable implementation (in C++) of a classic genetic algorithm (evolutionary algorithm) used to maximize the function f(x) = sin(x) in the domain 0 <= x <= 2pi. You can compile the program with the g++ compiler.
The project ‘Tirnavos Winery’.
This project refers to the development of the online web presentation of the Agricultural Winery Cooperative of Tirnavos. The site was developed with the free web content management system Joomla.
The project ‘Reception’ (Hotel Reception Manager).
Within the framework of the course “Software Engineering II – Laboratory” (Department of Informatics and Communications, T.E.I of Serres) we developed as a semester assignment an application for the management of hotel businesses.
Both the graphical user interface (GUI) and the application were implemented with Qt while the database in SQLite. More specifically, the end user can perform through this application functions such as: processing of customers / rooms, booking rooms, search rooms / customers, inventory of hotel services offered to customers, central management for the correct operation of the hotel, central management of the cost of services provided, as well as adding new users and system administrators to the system.
The project ‘map-places’ (Map Places).
This project refers to a safe, friendly and useful to the end-user Web Geographic Information Management System which is used for displaying and managing GIS on the Internet. The Geographic Information is located on an exclusive database (MySQL) and the user can browse them by categories. The system also has both front-end for the viewing of GIS as well as back-end for managing the overall system.
This project is free software and you can improve it if you want to.
Implementation of basic string processing functions in C.
Below there are some basic processing functions of strings in C. The implementations are approached with the pointers of C, thus creating faster and more compact code.
Implementation of insertion sort algorithm for single linked lists.
The following program generates N random integers between 0 and 999, creates a linked list inserting a number in each node and then rearranges the nodes of the list so that the numbers appear sorted when we go through the list. For the sorting, it maintains two lists: one input list (not sorted) and one output list (sorted). In each iteration of the loop, it removes a node from the input list and enters it in the appropriate position in the output list. The code is simplified by using head nodes for each list, which contains links to the first node lists. Also, both lists (input and output) are printed.
Implementation of closest point calculation.
This program demonstrates the use of an array and is representative of the usual situation in which we store data in one array to process them later. It counts the number of pairs of N randomly generated points of the unit square, which can be connected to a line segment of length less than ‘d’, using the point data type. Because the execution time of this program is O(n2), it can’t be used for large N.