George Pashev

Website of George Pashev (Jidai Mirai)

Scientist, Programmer, Data Scientist, Enterpreneur

Концептуално и компютърно моделиране на процеси с акумулиране и синтезиране на данни във висшето образование

Концептуално и компютърно моделиране на процеси с акумулиране и синтезиране на данни във висшето образование
  • September 2018
  • Conference: 7-ма Нац. конфереция „Електронното обучение във висшите училища“
  • At: Боровец

Упражнения СТ2

Материали за упражненията по СТ-2 за спец. СТД - задочни (3.к.) можете да изтеглите от тук:

https://drive.google.com/drive/folders/1p09rzMizh62_6ikYnaN_qP6nnNAVilyB?usp=sharing

Линк за сваляне на Netbeans Portable:

https://www.softpedia.com/get/PORTABLE-SOFTWARE/Programming/NetBeans-IDE-Portable.shtml

 

гл. ас. д-р инж. Г. Пашев

EMS – A Workflow Programming Language and Environment

 

Title:         EMS – A Workflow Programming Language and Environment

Authors:    George Pashev, George Totkov

DOI: 10.18421/TEM73-21

Цитиране: George Pashev, George Totkov.(2018).EMS – A Workflow Programming Language and Environment.TEM Journal, 7(3), 638-644

 

Преглед: тук

Автоматично акумулиране и агрегиране на данни за оценка на качеството във висшето образование

Статия:

Тотков Г., Р. Донева, С. Гафтанджиева, Г. Пашев. Автоматично акумулиране и агрегиране на данни за оценка на качеството във висшето образование, 10-та Национална конференция „Образованието и изследванията в информационното общество“, Пловдив, юни 2017 г., Асоциация „Развитие на информационното общество“, Ракурси ООД, 79- 88.

Линк: http://sci-gems.math.bas.bg/jspui/bitstream/10525/2824/1/ERIS2017-book-p08.pdf

 


 



Избираема дисциплина "Програмиране с Node.JS"

Избираема дисциплина "Програмиране с Node.JS"

PDF ръководство за упражненията:

Свали

 

Portable версия на програмна среда:

Свали

1. Упражнение: Сървър Express Калкулатор

var express=require('express');
var app=express();
app.get('/', function(req, res){
res.send('Hello World!');


});

app.get('/delete/', function(req, res){
//console.log(result);
res.setHeader('Access-Control-Allow-Origin', '*');

try{
var sqlite3=require("sqlite3").verbose();
var db=new sqlite3.Database("EMSG.db");
db.serialize(function(){
console.log("17");
db.run("DELETE FROM LOG;", function(){
console.log("19");
db.close();
res.send(JSON.stringify({status: "OK"}));

});

});
//db.close();
}catch(error){
console.log({error : error});

}





});

var logResult=function(result, request){
//console.log(result);

try{
var sqlite3=require("sqlite3").verbose();
var db=new sqlite3.Database("EMSG.db");
db.serialize(function(){
db.run("CREATE TABLE "+
" if not exists "+
" LOG("+
"ID INTEGER PRIMARY KEY AUTOINCREMENT, "+
" txt text not null, "+
" request text not null,"+
" time datetime default current_timestamp"+
" );"
);
var stmt=db.prepare("INSERT INTO LOG(txt, request) VALUES(?, ?)");
stmt.run(JSON.stringify(result), JSON.stringify(request));
stmt.finalize();
});
db.close();
}catch(error){
console.log({error : error});

}



}

app.get('/one/', function(req, res){
var result={};
try{
res.setHeader('Content-Type', 'application/json');
res.setHeader('Access-Control-Allow-Origin', '*');

var a=parseInt(req.param("a"));
var b=parseInt(req.param("b"));
console.log(typeof a);
console.log(typeof b);

if(typeof a !=='number' || typeof b !=='number' ){
result={error: "Wrong format"};
res.send(JSON.stringify(result));
return;
}
var dejstvie=req.param("dejstvie");

switch(dejstvie){
case 'add':
result={dejstvie: 'plus', res: a+b};

break;
case 'sub':
result={dejstvie: 'minus', res: a-b};
break;
case 'mul':
result={dejstvie: 'po', res: a*b};
break;
case 'div':
result={dejstvie: 'deleno', res: a/b};
break;
default:
result={error: "No such action."};
break;
}

}catch(e){
result={error: e};
}

logResult(result, {a: a, b: b, dejstvie: dejstvie});
res.send("{\"result\": "+JSON.stringify(result)+"}");





});
app.get('/log/', function(req, res){
//res.setHeader('Content-Type', 'application/json');
res.setHeader('Access-Control-Allow-Origin', '*');
response=[];
try{
var sqlite3=require("sqlite3").verbose();
var db=new sqlite3.Database("EMSG.db");
db.serialize(/*function(){
db.run("CREATE TABLE "+
" if not exists "+
" LOG("+
"ID INTEGER PRIMARY KEY AUTOINCREMENT, "+
" txt text not null, "+
" request text not null,"+
" time datetime default current_timestamp"+
" );"
);



},*/
function(){
console.log("116");
db.each("SELECT * from LOG;",
function(err, row){
console.log(typeof err);
console.log(err);
if(err!= null){
console.log("119");
//console.log("problem: "+err);
response={error: err};
//console.log(res);

//res.send(JSON.stringify(response));
return;
}
//console.log(err);
console.log("131");
response.push(row);

}
,
function(){
console.log("136");
console.log(response);
console.log("before send");
res.send(JSON.stringify(response));
db.close();
}


);
//res.send(JSON.stringify(response));


}

);

}catch(error){
console.log({error : error});
res.send(JSON.stringify({error : error}));
}




});
var server=app.listen(8087, function(){
var host=server.address().address;
var port=server.address().port;
console.log("Listening at http://%s:%s", host, port);
});

 

2. Клиентско приложение.

<html>
<head>
<title>Елка</title>
<meta charset="utf-8">
<script
src="https://code.jquery.com/jquery-3.2.1.min.js"
integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4="
crossorigin="anonymous"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">

<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
<style>
input[type="number"] {
max-width:30%;
min-width:20%;
}
.label-a{
min-width:10%;
max-width:15%;
}
</style>

</head>
<body>
<div class="panel panel-primary">
<div class="panel-heading">
Супер яка елка
</div>
<div class="panel-body">
<table class="table table-hover">
<tr>
<td ><div class="label-a">a</div></td><td><input type="number" class="form-control" id="input_a" name="input_a"></td>
<td ><div class="label-a">b</div></td><td><input type="number" class="form-control" id="input_b" name="input_b"></td>
</tr>
<tr>
<td colspan="2">
<select class="form-control" id="dejstvie" name="dejstvie">
<option value="add">събиране</option>
<option value="sub">изваждане</option>
<option value="div">деление</option>
<option value="mul">умножение</option>
</select>
</td>
<td colspan="2">
<input class="btn btn-primary" type="button" id="buton4e" name="buton4e" value="Калкулирай">
<input class="btn btn-primary" type="button" id="delete" name="delete" value="Изтрий">

</td>



</table>


</div>
</div>
<div class="panel panel-primary">
<div class="panel-heading">
Лог на действията
</div>
<div class="panel-body" id="logDiv">
</div>
<div class="panel-footer" id="logResult">
</div>
</div>

<script>
function aaaa(){
///console.log("Hello.");
var val_a=$("#input_a").val();
var val_b=$("#input_b").val();

var d=$("#dejstvie").val();

//console.log({a: val_a, b: val_b, d: d});
var url="http://localhost:8087/one/?a="+val_a+"&b="+val_b+"&dejstvie="+d;
//alert(url);
$.ajax({
url: "http://localhost:8087/one/?a="+val_a+"&b="+val_b+"&dejstvie="+d,
dataType: "text",
//jsonpCallback: "logResults",
error: function (request, error) {
alert("AJAX Call Error: " + error);
},
success: function (response) {
var resp = JSON.parse(response);
//alert(response);
//alert(resp.result.res);
$("#logResult").html("Result: "+resp.result.res);


},
});
///log results
$.ajax({
url: "http://localhost:8087/log/",
dataType: "text",
//jsonpCallback: "logResults",
error: function (request, error) {
alert("AJAX Call Error: " + error);
},
success: function (response) {
//$("#logResult").text("");
var resp = JSON.parse(response);
var new_text="";
for(i=0; i<resp.length; i++){
new_text+="<div>";
new_text+="request: "+resp[i].request+"<br/>";
new_text+="time: "+resp[i].time+"<br/>";
new_text+="</div>";
}
$("#logDiv").html(new_text);



//$("#logResult").text($("#logResult").text()+new_text);


},
});
};

function logResults(data){
//console.log(data);
alert(data);

};

$(document).ready(function(){
aaaa();
$("#delete").on('click', function(){
$.ajax({
url: "http://localhost:8087/delete/",
dataType: "text",

error: function (request, error) {
alert("AJAX Call Error: " + error);
},
success: function (response) {
$("#logResult").text("");
var res=JSON.parse(response);
if(typeof res.status == "undefined"){
$("#logDiv").html("Кофти");
}else if(res.status=="OK"){
$("#logDiv").html("OK");
}else{
$("#logDiv").html("Проблеми с базата данни");

}




//$("#logResult").text($("#logResult").text()+new_text);


},
});
});

$("#buton4e").on('click', function(){ aaaa();} );










});






</script>

</body>
</html>

За контакти:

ас. д-р инж. Георги Пашев

e-mail: georgepashev@uni-plovdiv.bg

http://gpashev.com

 

Упражнения по компютърна лингвистика за студенти

Упражнения по Компютърна лингвистика за специалност Информатика 4. курс, задочна и редовна форма на обучение.

при гл. ас. д-р инж. Георги Пашев

e-mail: georgepashev@uni-plovdiv.bg

 

Линк към Google Classroom на дисциплината: ( https://classroom.google.com/c/MTY4OTIzMzU0Njk0?cjc=rwht7yj )

Линк към теми за проекти от упражнения: (https://docs.google.com/document/d/1uEz3dke1fuo55sFK2Dp0hwc-MTDnt5lHjJaoo5ZdFwU/edit?usp=sharing)

Упражнения, теми:

Упражнение 1: Крайни автомати

1. Създайте парсър на удобен за вас програмен език (на упр. ще бъде показан пример с езика PHP), който да имплементира краен автомат, който се подава като параметър на парсващата функция/процедура, заедно с текст за парсване и връща информация дали текстът е парснат успешно (отговаря на крайния автомат), или не.

2. Използвайки 1, създайте краен автомат, който да парсва изречения от този тип:

ab, aabb, abbb, aaaab, .... (променлив брой a...b...)

3. Използвайки 1, създайте парсър на дата във формат "DD.MM.YYг.".

Упражнение 2: Регулярни изрази

1. Като използвате помощния файл за упражненията и др. материали онлайн, запознайте се със синтаксиса на регулярните изрази.

2. Запознайте се с PHP функции preg_match, preg_match_all, preg_replace.

3. Като използвате preg_match_all, напишете PHP скрипт, който намира в текст всички дати във формат DD.MM.YYYY, като отделя дните, месеците и годините в подходящи подмасиви и генерира изходящ текст от рода:

Намерена е дата 15.01.2018г, денят е 15 подред на месец 01 от година 2018г.

4. Като използвате някои от функциите, напишете PHP скрипт, който намира в текст всички дати във формат DD.MM.YYYY, и генерира подобен на този текст, в който датите са в американски формат MM/DD/YYYY.

Например, текста:

На 24.09.2018г. се проведе упражнение по Компютърна лингвистика

да се превежда като

На 09/24/2018г. се проведе упражнение по Компютърна лингвистика

5. Напишете PHP скрипт, който намира в текст всички URL адреси по http/https/ftp адресна схема и ги показва в списък.

Задача: крос транслиране на командни компютърни езици с регулярни изрази. Примерен крос транслатор може да свалите от тук:

https://www.dropbox.com/s/znhxozltwq30kxe/translator.php?dl=0

 

Упражнение 3. Контекстно независими граматики

Използва се инструмента Grammophone, линк към който може да намерите в помощния файл за упражненията по-долу.

1. Решете задачите от темата за Контекстно независими граматики в помощния файл.

2. Допълнителни задачи:

2.1. Напишете контекстно независима граматика, която да парсва успешно програмен текст на "мини програмен език" (който за целта на упражненията ще бъде наречен PeUScript), на който е написан следния пример:

 

def A=0 as Int
def B=12.0 as Float
def I=0 as Int 
while I<100 or not A>7000 do
	print "Stojnostta na I e "+I+"\n"
	A=I+B
	I=I+1
	print "Stojnostta na B e"+B+"\n"
	if B <> 12.0 then
		break
	endif
done

2.2. Напишете с помощта на езици PHP и Javascript (или други удобни за вас) кространслатор и среда на изпълнение на  PeUScript , като първо преведете програмния текст на Javascript и стартирайте така получения JavaScript код в браузъра.

Примерен проект за Bison & Flex (инсталирани в Линукс/Убунту програмна среда): Свали от тук

Виртуална машина за VirtualBox с готови инсталирани пакети за работа свалете от тук:

https://www.dropbox.com/s/ipki0tirv9qn2z1/xubuntu.rar?dl=0

Компилацията се извършва с последователно извикване на командите:

flex -o calc.flex.cc calc.lex
bison calc.yy
 cc -fpermissive calc.tab.cc calc.flex.cc -Wall -lm  -o rpccalc

Еквиваленти на BISON и FLEX за други езици и програмни среди:
1. Parsimonious за Python
За употреба на пакета се изисква Python конзола. Портативен (portable) вариант за Windows на такава с предварително инсталиран пакет на Parsimonious може да изтеглите от тук:
(https://www.dropbox.com/s/v96u1wpgi8q4p3g/Portable%20Python%203.7.0%20x64.rar?dl=0)

Работещ пример на елементарна граматика за инструмента:

 

 

 

from parsimonious.grammar import Grammar
grammar = Grammar(
"""
bold_text = bold_open text bold_close
text = ~"[A-Z 0-9]*"i
bold_open = "(("
bold_close = "))"
""")
print(grammar.parse('((bold stuff))'))

 



Конзолата на Python се стартира от разархивирания архив от папката: App\Python и файла е python.exe

При нужда от инсталация на допълнителен пакет в папката App\Python се стартира Windows конзола и се изпълнява командата:

python -m pip install <package name>

Пример, парсващ елементарен израз:

from parsimonious.grammar import Grammar
grammar = Grammar(
     """
        exps = exp op exp 
exp = num / expparen 
expparen = lparen num rparen
op = ~"[\+\-]"i
        lparen = "("
rparen = ")"
num = ~"[0-9]+"i
     """)
print(grammar.parse('12+23'))

2. PLY за Python (напълно функционален заместител на bison/flex)

2.1. Инсталирайте PLY в конзолата с изпълнение на командата в командната конзола:

python -m pip install ply

2.2. Създайте в директорията App\Python файл calclex.py, със следното съдържание:

# ------------------------------------------------------------
# calclex.py
#
# tokenizer for a simple expression evaluator for
# numbers and +,-,*,/
# ------------------------------------------------------------
import ply.lex as lex
# List of token names.   This is always required
tokens = (
   'NUMBER',
   'PLUS',
   'MINUS',
   'TIMES',
   'DIVIDE',
   'LPAREN',
   'RPAREN',
)
# Regular expression rules for simple tokens
t_PLUS    = r'\+'
t_MINUS   = r'-'
t_TIMES   = r'\*'
t_DIVIDE  = r'/'
t_LPAREN  = r'\('
t_RPAREN  = r'\)'
# A regular expression rule with some action code
def t_NUMBER(t):
    r'\d+'
    t.value = int(t.value)    
    return t
# Define a rule so we can track line numbers
def t_newline(t):
    r'\n+'
    t.lexer.lineno += len(t.value)
# A string containing ignored characters (spaces and tabs)
t_ignore  = ' \t'
# Error handling rule
def t_error(t):
    print("Illegal character '%s'" % t.value[0])
    t.lexer.skip(1)
# Build the lexer
lexer = lex.lex()

 

2.3 Създайте в директорията App\Python файл yacc.py, със следното съдържание:

# Yacc example

 

import ply.yacc as yacc
# Get the token map from the lexer.  This is required.
from calclex import tokens
def p_expression_plus(p):
    'expression : expression PLUS term'
    p[0] = p[1] + p[3]
def p_expression_minus(p):
    'expression : expression MINUS term'
    p[0] = p[1] - p[3]
def p_expression_term(p):
    'expression : term'
    p[0] = p[1]
def p_term_times(p):
    'term : term TIMES factor'
    p[0] = p[1] * p[3]
def p_term_div(p):
    'term : term DIVIDE factor'
    p[0] = p[1] / p[3]
def p_term_factor(p):
    'term : factor'
    p[0] = p[1]
def p_factor_num(p):
    'factor : NUMBER'
    p[0] = p[1]
def p_factor_expr(p):
    'factor : LPAREN expression RPAREN'
    p[0] = p[2]
# Error rule for syntax errors
def p_error(p):
    print("Syntax error in input!")
# Build the parser
parser = yacc.yacc()
while True:
   try:
       s = input('calc > ')
   except EOFError:
       break
   if not s: continue
   result = parser.parse(s)
   print(result)

 

 

2.4. Стартирайте парсъра с изпълнение на Windows конзолната команда:

python yacc.py

4. Търсене на отношение в текст

Да се състави алгоритъм (и да се имплементира на PHP), който автоматизирано намира отношения на пишещия към търсени термини в текста, като се създадат примерни речници:

 

  • речник на основните форми на думите с попълнени съответствия за основни форми за примерния текст, с който се тества;
  • речник на съществителните, за които се търси отношение;
  • речник на думите, носещи информация за положително или отрицателно отношение на пишещия в основните им форми, съдържащ индекс на отношение/емоция за съответната дума.

 

Алгоритъмът да е достатъчно съобразителен, за да открива инвесии (напр. чрез откриване на ключова дума "не").

Примерно решение тук: [https://www.dropbox.com/s/uw5hoaxmepnoztp/analizator_otnoshenie.php?dl=0]

5. Чат ботове

Примерен чат бот, разработван по време на упражненията, който умее да прави изводи спрямо PROLOG базирана база знания:

http://gp.gpashev.com:93/CrossTranslatorWeb/indexPrologBot.php

(Изходния код се предоставя по време на упражненията).


Помощен файл за упражненията свалете от тук

download

 

Save

Applying Machine Learning Classifiers in a Database Smart Indexing Algorithm

Angelov Y., G. Pashev, G. Totkov, Applying Machine Learning Classifiers in a Database Smart Indexing Algorithm, Scientific Works of the Union of Scientists in Bulgaria-Plovdiv, series C. Тechnics and Technologies, Vol. XIV., ISSN 1311-9419 (Print), ISSN 2534-9384 (On- line), 2017; p. 33-36 (http://www.subplovdiv.com/images/nauchni_trudove/2017_tehnicheski_nauki.pdf )

URL: https://www.researchgate.net/publication/318054794_Applying_Machine_Learning_Classifiers_in_a_Database_Smart_Indexing_Algorithm

Подготовка за контролна работа номер 2 по ОС

Задачи за подготовка за Контролна работа № 2

при ас. д-р инж. Георги Пашев

контакти: georgepashev@gmail.com; http://gpashev.com

Зад. 1. Да се напише BASH скрипт, който изписва на потребителя "Моля, въведете 0 за кръг и 1 за елипса" и в зависимост от въведеното от потребителя число стартира подпрограма (функция) съответно за въвеждане на необходимите променливи и изчисляване и извеждане на лицето. С допълнителна команда (напр. php или awk) да се подсигури изчисление на дробни числа (понеже стандартната команда let в BASH поддържа работа само с цели числа).

#!/bin/bash

function calc_circle()
{
    echo "Vyvedete r"
    read r
    echo $( awk "BEGIN {print 3.14*$r*$r}"  )

}

function calc_elipse()
{
    echo "Vyvedete a"; read a; echo "Vyvedete b"; read b;
    echo $( awk "BEGIN {print 3.14*$a*$b}"  )
}



echo "Molya, vyvedete 0 za kryg ili 1 za elipsa"
read Case
case $Case in
0)
    calc_circle
;;
1)
    calc_elipse
;;
*)
    echo "Obyrkal si, brat"; exit 1;
;;
esac

Зад. 2. Да се напише BASH скрипт, който в директорията /etc намира всички *.sh файлове и копира в нова директория shells всички от тях, които са собственост на юзър root.

#!/bin/bash
LIST=$( find /etc -name "*.sh" -type f  )
 
if [ -e shells ]
then
    rm -rf shells
fi
mkdir shells
for i in $LIST
do
    OWNER=$( ls -l $i | awk '{print $3}'  )
    if [ "$OWNER" == "root" ]
    then
        cp $i shells/
    fi
done
 


Зад. 3. Да се напише BASH скрипт, който реализира функция за сумиране на числа, функция за намиране на произведение на числа и от командния ред, в зависимост от входните параметри да извиква едната или другата функция.

#!/bin/bash
 
function sum()
{
    let S=0
    for i in $*
    do
        let S+=i
    done
    echo $S
 
}
function mul()
{
    let S=1
    for i in $*
    do
        let S*=i
    done
    echo $S
}
 
echo "Result: $( $*  )"
 


Зад. 4. Да се напише BASH скрипт, който реализира функция killps, която убива процеси с име name, които са собтвеност на потребител user и се извиква така: killps name user и пише в out.log редове с ID, name на убития процес и дата и час на убиването.

#!/bin/bash
 
function killps()
{
    name=$1
    user=$2
    PSs=$( ps aux | grep $name | grep ^$user | grep -v zad4.sh | grep -v grep | awk '{print $2}'  )
    for i in $PSs
    do
        curPSName=$( ps aux | grep $i | awk '{print $11}'  )
        kill $i
        if [ $? -eq 0  ]
        then
            curDate=$( date  )
            echo "$i $curPSName $curDate" >> out.log
        fi        
    done
}
 
killps $*
 


Литература:

1) Cobault, Paul, Linux Fundamentals

2) Ryans Tutorials, BASH Scripting Tutorial

Учебни материали за Контролна 1 по ОС

 

Учебни материали за Контролна 1 по ОС при ас. д-р инж. Георги Пашев:


  1. Ръководство за работа с Линукс: Linux Fundamentals, Paul Cobbault (до 203 стр. за 1. контролна)
  2. За документация за команди: команда man <команда> или Linux Manual Pages.


Примерни задачи за контролната:

Задача 1:

Да се напише команден ред, който:

  • Създава папка с име one, влиза в нея и;
  • Създава файл 1.txt, който съдържа имената на всички файлове и/или папки в директорията ~, сортирани по азбучен ред.
  • Създава файл 2.txt, който е symlink към 1.txt

Решение:

mkdir one

cd one

ls ~ | sort > 1.txt

ln -s 1.txt 2.txt


Задача 2:

Да се напише команден ред, който:

  1. Създава папка с име two, влиза в нея и;
  2. Създава файл 1.txt, който съдържа пътищата до всички .conf файлове в /etc, сортирани по азбучен ред;
  3. Създава файл 2.txt, който е символичен линк към 1.txt;
  4. Създава папка 1/, която съдържа копия на всички файлове от 1.
  5. За всички файлове от 4. добавя право за изпълнение за user group, която е собственик на файловете.

Решение:

mkdir two

cd two

find /etc -name "*.conf" -type f | sort > 1.txt

ln -s 1.txt 2.txt

mkdir 1

cd 1

find /etc -name "*.conf" -type f -exec cp {} . \;

find . -name "*.conf" -type f -exec chmod g+x {} \;

 


Примерни тестови въпроси:

От така дадения команден ред по-долу определете:

giorgio@giorgio-VirtualBox:~$ ls -l
total 248
drwxr-xr-x 7 giorgio giorgio   4096 мар  6 13:37 Desktop
drwxr-xr-x 2 giorgio giorgio   4096 дек  7  2015 Documents
drwxr-xr-x 4 giorgio giorgio   4096 мар 17 14:37 Downloads
-rw-r--r-- 1 giorgio giorgio   8980 дек  7  2015 examples.desktop
drwxr-xr-x 2 giorgio giorgio   4096 дек  7  2015 Music
-rw------- 1 root    root    201377 яну 18  2016 nohup.out
drwxr-xr-x 2 giorgio giorgio   4096 дек  7  2015 Pictures
drwxr-xr-x 2 giorgio giorgio   4096 дек  7  2015 Public
drwxr-xr-x 2 giorgio giorgio   4096 дек  7  2015 Templates
drwxr-xr-x 2 giorgio giorgio   4096 дек  7  2015 Videos
giorgio@giorgio-VirtualBox:~$

1. Кои са файловете, които нямат никакви права за изпълнение: examples.desktop; nohup.out;

2. Кои файлове не са от тип директория: examples.desktop; nohup.out;

3. Как се казва потребителят, който е собственик на файла nohup.out: root;

4. Как може да се добавят права за изпълнение за всички юзъри за nohup.out: chmod a+x nohup.out;

5. Напишете команда за изтриване на всички .out файлове в текущата директория: rm -f *.out

 


За въпроси:

д-р инж. Георги Пашев: georgepashev (at) gmail.com; georgepashev (at) uni-plovdiv.bg


 

Дисциплина ППМУ и ДПМУ и МП при Г. Пашев

Бързи връзки: Оценяване

Инсталация и конфигурация

Теми Курсови проекти по ППМУ и МП

Теми Курсови проекти по ДПМУ

За контакти

Съобщения за извънредни занятия

Учебна литература и полезни връзки

 

Достъп до онлайн материали чрез платформата Google Classroom:

2021-2022 ППМУ СТД 3к. зад.
https://classroom.google.com/c/NDgwMzM3Njk4ODky?cjc=2yuzhix
Базов курс (с най-много учебни материали):
ПУ ФМИ 2021 ППМУ упр. - СТД 3к. ред.
https://classroom.google.com/c/MjgxMjkwNTc3NTg4?cjc=3wetca2

 


 

Обща информация по отношение на оценяването:

За специалност СТД (редовни и задочни), оценяването става чрез:

Курсови проекти (отделни) за двете дисциплини ДПМУ, ППМУ. Темите за КП по ППМУ се избират от списък тук. Темите за КП по ДПМУ могат да бъдат избрани от тук.

Минимални изисквания за КП:

1. Работа с БД sqlite3;

2. Минимум 2 activities;

Бонус точки се дават за:

1. Работа с мрежови заявки, многонишкова работа;

2. Работа със специфичен хардуер на мобилното устройство: bluetooth, gsm modem (sms, data call);

3. Работа с asyncTask, Map, ConcurrentMap, List, ArrayList, ConcurrentArrayList, др.

4. GPS и Google Maps компонента;

 

 

Оценките от упражнения се поставят по време на последните часове от триместъра или по време на изпита от ас./гл.ас. Крайните оценки по съответната дисциплина се поставят от титуляра на дисциплината по време на изпита.

За специалност СИ (задочни), оценяването става чрез:

1) Курсови задачи, изпълнени по време на третата част от 5 у.ч. упражнения; ИЛИ

2) Решаване на тест по време на третата част от 5 у. ч. упражнения;

Оценките се поставят по време на третата част от 5 у.ч. упражнения и могат да бъдат коригирани от титуляр на дисциплината.

За специалност СИ (редовни), оценяването става чрез:

Курсови проекти по МП. Темите за КП по МП се избират от списък тук.

Оценките се поставят по време на последната седмица на триместъра и могат да бъдат коригирани от титуляр на дисциплината.

 


 

Списък с теми за курсофи проекти:

Списък: https://1drv.ms/w/s!ArI6oidlkCxomX5L9joU9XloqK1k

 


 

Разработвани курсови проекти по време на упражненията (Примерни курсови проекти):

https://drive.google.com/drive/folders/0B2Sg-oFX9K4NYW9XSUFnSGdRZGM?usp=sharing

 


Подготовка за провеждане на упражненията:

 

1) Андроид студио (Сваляне на архив и разархивиране):

https://drive.google.com/file/d/1QuYudYdE6_D29q779fOU60SArgsajEIj/view?usp=sharing

След сваляне и изтегляне се стартира bin/studio64.exe

2) Андроид SDK (Сваляне на архив и разархивиране в отделна директория):

Конфигурирано SDK може да изтеглите от тук: https://drive.google.com/open?id=1l8v8ADIblCO2xXCtjVofhS9rzYgkVp4r

3) Настройване на Андроид студио за локацията на Android SDK.

File -> Sync Project with Gradle Files

Ако няма настроена папка за локация на Android SDK, ще поиска посочването на пътя до Android SDK. За вече инсталирани среди чрез стандартен инсталатор, най-често SDK се намира в "C:\Users\fmi\AppData\Local\Android\sdk".

Промяна на локацията на SDK става в Tools -> SDK Manager -> Android SDK Location: Edit и новата папка се задава в отворилия се диалогов прозорец.

4) Настройване на виртуално устройство

Tools -> AVD Manager -> + Create Virtual Device. Избира се Phone, Pixel 2XL. При нужда се изтегля API (29, 28 напр.). Емулаторът се инсталира в SDK папката; При изтегляне на SDK от линка по-горе, той вече е в нея и няма нужда от инсталация на емулатор.


Учебна литература и полезни връзки

Най-актуална версия на Android Studio за разработка можете да свалите от тук.

Проекти, работени по време на упражненията, можете да видите тук: https://drive.google.com/drive/folders/0B2Sg-oFX9K4NYW9XSUFnSGdRZGM?usp=sharing

С цел подпомагане на работата за упражненията е създаден базов проект за Android Studio, който можете да свалите от тук.

Книга за самоподготовка: "Практическо програмиране за Android" Денис Колисниченко, второ преработено и допълнено издание, изд. "Асеневци", ISBN 978-954-8898-76-8;

Всеки студент задължително прави Курсов проект.Следва списък с примерни курсови проекти, от които студентите могат да избират, а биха могли да предлагат други теми с подобна трудност и при преценка на преподавателя, да бъдат одобрени.

Теми за проекти по ДПМУ

Разпределен на

Проект

1

 

Да се създаде част от дизайн за мобилно приложение за електронен магазин за оръжия. Да се състои от следните activities: Главно Activity, което реализира главно меню със следните менюта: Категории, Артикули, Склад; като тези подменюта имат следните елементи: Категории -> Преглед, Изтриване, Добавяне; Артикули -> Преглед, Изтриване, Добавяне; Склад -> Доставка, Бракуване, Продажба. Да се създаде Activity, което да дава интерфейс за реализация на Преглед по категории с филтър по написано от потребител име на категория, както и написано от потребител име на артикул. Да има подходящ бутон с 2 състояния с текст “Артикули, които не са на склад“, както и табличен изглед със самите артикули с колони „Номер“, „Име артикул“ „Категория“ „Единична цена“.

2

 

Да се създаде част от дизайн за мобилно приложение за електронен магазин за оръжия. Да се състои от следните activities: Изтриване нa артикул. Да има подходящ бутон с 2 състояния с текст “Артикули, които не са на склад“, както и табличен изглед със самите артикули с колони „Номер“, „Име артикул“ „Категория“ „Единична цена“. На всеки от редовете да има предвиден CheckBox, който ако е избран при натискане на бутон „Изтрий“ да изтрива съответния артикул. Да има и Activity, което да може да се ползва за добавяне/редакция на един артикул, реализиращо форма с подходящи входни widgets за „Номер“, „Име артикул“, „Категория“, „Единична цена“.

3

 

Да се създаде част от дизайн за мобилно приложение за електронен магазин за оръжия. Да се състои от следните activities: Бракуване, в което да има подходящ интерфейс за потребителя да бракува даден артикул в определени количества в склада. Да има вид на форма, в която в TableLayout с възможност за страниране или да могат да се скролват и избират чрез кликване на CheckBox във всеки ред на TableLayout-то артикули (може избраните да са повече от един), както и да може да се задава брой на артикулите, които ще се бракуват. Второто Activity да реализира „Изглед на склад“ , в което да има TableLayout, което да е със следните колони „Име артикул“, „Категория артикули“, „Наличност“. За удобство на потребителя в същото Activity по-долу да има форма за бързо добавяне/премахване на артикули в склада, като има текстово поле, което при избран ред от TableLayout да се попълва с името на избрания артикул, както и текстово поле за въвеждане на числа, както и два бутона, съответно: „Добавяне“ и „Премахване“.

4

 

Да се създаде част от дизайн за мобилно приложение за електронен магазин за оръжия.  Да се състои от следните activities: Главно Activity, което да реализира подходящ интерфейс за потребителско вписване с Username и Password. Да има подходящ бутон с 2 състояния, който ако е кликнат, отдолу да се появяват допълнителни елементи във формата, които да позволяват възстановяване на забравена парола, като e-mail с който е регистриран и името на потребителя, с което е регистриран. Второто Activity да позволява добавяне/редакция на категория, като има форма, подходяща за това. Във формата трябва да има текстово поле с името на категорията, както и изображение отдясно на него, което в последствие ще се показва, ако името на тази категория е вече заето. Над формата да има TableLayout с възможност за страниране, което да показва вече наличните категории.

5

 

Да се създаде част от дизайн за приложение „Активни потребители“, което да има за цел докладване на нередности в търговската мрежа.  Главно Activity, което да реализира подходящ интерфейс за потребителско вписване с Username и Password. Да има подходящ бутон с 2 състояния, който ако е кликнат, отдолу да се появяват допълнителни елементи във формата, които да позволяват възстановяване на забравена парола, като e-mail с който е регистриран и името на потребителя, с което е регистриран. Това Activity да предвижда възможност за вписване през Facebook, Google Account, LinkedIn и др. Второ Activity, което да реализира списък с подадени от текущия потребител сигнали дотук, както и с бутон за подаване на нов сигнал. Списъкът с подадените вече сигнали да се реализира с TableLayout, отдолу да има бутони за страниране на елементите в TableLayout-a или скролер (по избор). Всеки ред от таблицата да има CheckBox, който при избиране и кликване на бутон „Delete”да позволява изтриване на подадения сигнал.

6

 

Да се създаде част от дизайн за приложение „Активни потребители“, което да има за цел докладване на нередности в търговската мрежа.  Да се създаде Activity, в което да има подходяща форма за добавяне на нов сигнал. Един сигнал има Заглавие, Дата и час на добавяне (това поле ще се попълва автоматично и трябва да е забранено за редакция), скрито поле, което да съдържа GPS координатите, където е потребителят в момента на подаването на сигнала, дата в която потребителят е забелязал за първи път нарушение от такъв характер (с DatePicker), SurfaceView, което ще се ползва за показване на заснет от камерата образ на самото нарушение, за което се отнася сигнала, Бутон за изпращане на нарушението и ProgressBar, който ще уведомява потребителя за забавянето при предаване на нарушението към сървиса.

7

 

Да се създаде част от дизайн за приложение „Светците на деня“, което да реализира следните Activities: Главно Activity, което да показва TableLayout с възможност за скролване с наличните светци за текущия ден съгласно църковния календар. При кликване на конкретен светец ще се зарежда Activity с информация за конкретния светец в следния вид: Име, година на раждане, година на смърт, дата на канонизация, икона, кратко житие на светеца. Да има бутони за споделяне на информацията за светеца в социални мрежи (Facebook, Twitter, LinkedIn, Google+ и др.).

8

 

Да се създаде част от дизайн за приложение „Шах“ със следните Activities: Главно Activity, което да реализира меню за работата с игрите на шах, вкл. „Нова игра“, „Продължи стара игра“, „Запази текущата игра“. Да има Activity с TableLayout, който графично да наподобява шахматното поле с белите и черни квадрати. Да има отгоре бутон „Undo”, който ще се използва за връщане играта с един ход назад, както и бутон Menu, който ще връща към главното activity.

9

 

Да се създаде част от дизайн за приложение „Новинарски портал“. В главното Activity да има бутон, показващ меню с категориите новини, бутон „лупичка“, който при кликване да показва Activity „Търсене“, както и бутон „Refresh” за обновяване на текущата страница. Отдолу да има скролируемо TableView с новините в текущо избраната категория. В антетката на таблицата ще има името на категорията. Менюто с категориите ще съдържа следните категории „Начало“, „Новини“, „Региони“. Аналогично да се създаде дизайн за Activity „Региони“, което да съдържа списък с региони, като при кликване на регион да показва новини от там.

10

 

Да се създаде част от дизайн за мобилно приложение „Портал за продажби“. Да реализира с подходящ интерфейс, разпределен по Activities по избор на студента, който да има най-малко следните елементи: бутони с изображения за: „Всички категории“, „Запитване към магазина“, „Най-популярни“, „Най-ново за този месец“, „Продукти в промоция“. В ScrollView да показва първите 3 подкатегории от категории „Мобилни телефони“, „Компютърна техника“, „Аксесоари за мобилни телефони“. Да има TableLayout, показващ най-продавани артикули.

11

 

Да се създаде част от дизайн за мобилно приложение „Месинджър“.  Главното Activity да има отгоре бутони с 2 състояния: Скорошни, Контакти, Заявки за свързване. Ако е натиснат бутон, отдолу в TableLayout, който е скролируем се показват кратки изгледи на съобщенията. Да има Activity за преглед на съобщение. Едно съобщение може да има следните елементи: Заглавие, текст, Прикрепени снимки, прикрепени файлове. Да се създаде и Activity за ново съобщение.

12

 

Да се създаде част от дизайн за приложение „Дама“ със следните Activities: Главно Activity, което да реализира меню за работата с игрите на дама, вкл. „Нова игра“, „Продължи стара игра“, „Запази текущата игра“. Да има Activity с TableLayout, който графично да наподобява игралното поле на „Дама“. Да има отгоре бутон „Undo”, който ще се използва за връщане играта с един ход назад, както и бутон Menu, който ще връща към главното activity.

13

 

Да се създаде дизайн за приложение, подобно на mapstr. Да използва MapFragment. В такова приложение, потребителят може да добавя списък с локации на конкретна позиция в картата. Всяка локация се характеризира с GPS координати, Име на локацията, Категория на локацията. Да се създадат Activities, както и подходящо меню за: Добавяне/редакция/изтриване на локация/категория на локация. Да има бутони за споделяне в социални мрежи на текуща локация.

14

 

Да се създаде дизайн за приложение „Организатор на задачи“. В главното Activity да има отгоре: бутон за преглед на всички незавършени задачи, бутон за добавяне на нова задача, бутон, водещ към Activity, което да позволява закупуване на платена версия на същото приложение, с премахнати реклами. Отдолу да има CalendarView с възможност за избор на ден. При избран ден и при кликване на бутон за добавяне на нова задача да се зарежда Activity за добавяне на задача със следните атрибути: Име, начален час, краен час, приоритет (без приоритет, нисък, среден, висок), Нотификации (да/не) (показва дали да са включени нотификациите за тази задача), Описание на задачата. В главното Activity да има ImageView, което да представлява реклама, с опция да се скрива след 30 секунди след зареждане на Activity-то.

15

 

Да се създаде част от дизайн за приложение „Съвестни шофьори“, което да има за цел докладване на нередности в пътната мрежа.  Да се създаде Activity, в което да има подходяща форма за добавяне на нов сигнал. Един сигнал има Заглавие, Дата и час на добавяне (това поле ще се попълва автоматично и трябва да е забранено за редакция), скрито поле, което да съдържа GPS координатите, където е потребителят в момента на подаването на сигнала, дата в която потребителят е забелязал за първи път нарушение от такъв характер (с DatePicker), SurfaceView, което ще се ползва за показване на заснет от камерата образ на самата пътна нередност (например, дупка, липсваща мантинела, др.), за която се отнася сигнала, Бутон за изпращане на нарушението и ProgressBar, който ще уведомява потребителя за забавянето при предаване на нарушението към сървиса.

16

 

Да се създаде част от дизайн за приложение за провеждане на анкети. Да има Главно Activity, което със скролируемо TableLayout да предлага списък от категории на анкетите и при кликване на конкретна категория по аналогичен начин да се зарежда списък с активните анкети в конкретна категория. При кликване на конкретна анкета, ще се зарежда Activity за отговор на анкетата. Всяка анкета има заглавие, описание, опции (като потребител избира валидната за него опция с кликване на CheckBox). Да има бутон за съхраняване на отговора и ProgressBar, който да показва забавянето при изпращане на отговора към Service. Да има Activity, което да показва резултатите от конкретна анкета със заглавие и подходящ Chart. Може да се използва библиотека като MPAndroidChart.

17

 

Да се създаде дизайн за приложение на туристическа агенция, предлагаща организирани екскурзии.  Главното Activity предоставя филтри за търсене на екскурзии по следните категории: дата от; дата до; Континент; регион в континент; минимален брой оставащи места в екскурзията; Брой дни; минимална категория на хотелите в екскурзията, както и  скролируем TableLayout, който показва самите екскурзии, отговарящи на зададените филтри. При кликване на конкретна екскурзия, излиза Activity показващо повече информация за екскурзия като Заглавие, галерия със снимки, брой дни, информация за всеки ден, информация за допълнителни екстри (напр. разходка в музей Лувър с предплатени билети). В това Activity има бутон Резервирай, при кликването на който, ще се отваря Activity за резервация на избраната екскурзия, която включва: брой възрастни над 7г. възраст, брой деца, е-mail за контакт, адрес за контакт с (Държава, Град, П.К., Улица ред 1, Улица ред 2), телефон за контакт.

18

 

Да се създаде дизайн за приложение „Съветник за тренировки“. Главното Activity да съдържа меню с любими тренировки, бутон с картинка, при кликването на който да се показва текущ потребителски профил със снимка на потребител, Име на потребител, брой изгорени калории.  Да има подходящ скролируем Layout, който да показва списък с тренировки, като списъкът се състои от главна снимка, продължителност в минути, ниво на интензивност (високо, средно, ниско), ниво на трениращ (начинаещ, среден, напреднал). При кликване на бутон „Тренировки“, да се зарежда списък с категории на тренировки (например: за сила, за устойчивост, за бързина, др.). При кликване на категория тренировки, ще се зарежда Activity с TableLayout със съответните тренировки в категория. При кликване на конкретна тренировка се зарежда Activity за провеждане на тренировка, което се състои от брояч: колко секунди са преминали, заглавие на тренировката и VideoView, което зарежда и пуска видеото на тренировката.

19

 

Да се създаде част от дизайн за приложение „Моите часове за деня“, което да подпомага студент да проследява по-лесно дневната си учебна програма , което да реализира следните Activities: Главно Activity, което да показва TableLayout с възможност за скролване с наличните часове за текущия ден съгласно учебна програма. При кликване на конкретен час, ще се зарежда Activity с информация за конкретния час в следния вид: Име дисциплина, име преподавател, номер на текуща седмица, съгласно академичния календар. Да има бутони за споделяне на информацията за часа в социални мрежи (Facebook, Twitter, LinkedIn, Google+ и др.).

20

 

Да се създаде част от дизайн за приложение „Корупционни сигнали“, което да има за цел докладване на корумпирани служители в държавната администрация.  Главно Activity, което да реализира подходящ интерфейс за потребителско вписване с Username и Password. Да има подходящ бутон с 2 състояния, който ако е кликнат, отдолу да се появяват допълнителни елементи във формата, които да позволяват възстановяване на забравена парола, като e-mail с който е регистриран и името на потребителя, с което е регистриран. Това Activity да предвижда възможност за вписване през Facebook, Google Account, LinkedIn и др. Второ Activity, което да реализира списък с подадени от текущия потребител сигнали дотук, както и с бутон за подаване на нов сигнал. Списъкът с подадените вече сигнали да се реализира с TableLayout, отдолу да има бутони за страниране на елементите в TableLayout-a или скролер (по избор). Всеки ред от таблицата да има CheckBox, който при избиране и кликване на бутон „Delete”да позволява изтриване на подадения сигнал. Да има Activity за добавяне на сигнал, като всеки сигнал съдържа: Заглавие; Име на служител, за който се отнася; Име на отдел; Име на агенция, Име на министерство; Описание на сигнала.

21

 

Да се създаде дизайн за приложение „Видео уроци за програмисти“. Главното Activity да съдържа меню с любими уроци, бутон с картинка, при кликването на който да се показва текущ потребителски профил със снимка на потребител, Име на потребител, изгледани уроци.  Да има подходящ скролируем Layout, който да показва списък с уроци, като списъкът се състои от главна снимка, продължителност в минути, ниво на трудност (високо, средно, ниско), ниво на обучаван (начинаещ, среден, напреднал). При кликване на бутон „Уроци“, да се зарежда списък с категории на уроци (например: за уеб приложения, за декстоп приложения, др.). При кликване на категория уроци, ще се зарежда Activity с TableLayout със съответните уроци  в категория. При кликване на конкретен урок се зарежда Activity за провеждане на урок, което се състои от брояч: колко секунди са преминали, заглавие на урока и VideoView, което зарежда и пуска видеото на тренировката с възможност за пауза.

22

 

Да се създаде част от дизайн за мобилно приложение „Онлайн аптека“. Да реализира с подходящ интерфейс, разпределен по Activities по избор на студента, който да има най-малко следните елементи: бутони с изображения за: „Всички категории“, „Запитване към магазина“, „Най-популярни“, „Най-ново за този месец“, „Продукти в промоция“. В ScrollView да показва първите 3 подкатегории от категории „Козметика“, „Антивирусни препарати“, „Ваксини“. Да има TableLayout, показващ най-продавани артикули.

23

 

Да се създаде част от дизайн за мобилно приложение „Каталог на ресторанти“. Главното Activity ще показва скролируем TableLayout с най-близките до потребителя ресторанти, подредени по намаляващ ред на тяхната категория. Всеки ресторант в Layout-а ще е представен с главна снимка, име на ресторанта, оценка, получена по каталог. При кликване на конкретен ресторант, ще се зарежда Activity с информация за съответния ресторант: Главна снимка, Име, Оценка, Достойнства, Недостатъци, Адрес, Телефон за поръчка, MapFragment със заредена карта с точка в координатите, където е адреса на ресторанта. Да има бутони за споделяне на конкретен ресторант в социални мрежи.

24

 

Да се създаде част от дизайн за мобилно приложение, подпомагащо работата на мрежови администратори при поставяне на Wireless Access Points из сграда. Да има Activity с TableLayout, което да предоставя списък с имена на налични мрежи и колко dB е силата на сигнала на конкретната мрежа от списъка. При кликване на конкретна мрежа, да се показва инфо за нея в отделно Activity, което да съдържа името на мрежата, начина на кодиране на сигнала в мрежата, колко dB e измерената сила в тази точка за тази мрежа.

25

 

Да се създаде част от дизайн за мобилно приложение PriorityFeed, работещо с Facebook Graph API, което да предоставя функционалност за приоритизиране на постингите в News Feed-а на потребителя. Всяка една новина от NewsFeed-а излиза в главното Activity, заедно с число: изчислен коефициент на важност на новината, на базата на зададените лични критерии за приоритизиране. При кликване на конкретна новина, да се зарежда в Activity самата новина в WebView. Задаването на правилата на приоритизиране да става в отделни Activity, в което се задават тези приятели на потребителя, които са по-важни, както и думи, които трябва да съдържат важните постове, както и думи, които не трябва да съдържат важните постове.

26

 

Да се създаде дизайн за приложение „Каталог книги“. Главното Activity да съдържа меню с любими книги, бутон с картинка, при кликването на който да се показва текущ потребителски профил със снимка на потребител, Име на потребител, брой свалени книги.  Да има подходящ скролируем Layout, който да показва списък с книги, като списъкът се състои от главна снимка, брой страници, Жанр. При кликване на бутон „Книги“, да се зарежда списък с жанр на книги (например: фантастика, IT и др.). При кликване на категория книги, ще се зарежда Activity с TableLayout със съответните книги в категория. При кликване на конкретна книга, се зарежда Activity за четене, което се състои от брояч: колко секунди са преминали, заглавие на книгата и WebView, което зарежда самата книга.

27

 

Да се създаде дизайн за мобилно приложение „Игра Тетрис“. Да се създаде TableLayout с квадратите, които по време на изпълнение на програмата динамично ще стават светли или тъмни, в зависимост от падащите фигури. Да има бутони за преминаване наляво, надясно, завъртане наляво, завъртане надясно на падащата фигура. Да има подходящ изглед за нивото на играта и за спечелените точки.

28

 

Да се създаде дизайн за мобилно приложение за ресторант, в който поръчките вместо с викане на сервитьор/ка, стават с мобилното приложение.  В главното Activity има текстово поле, в който потребителя въвежда номера на масата си и при натискане на бутон влиза в Activity за поръчка. Това Activity съдържа филтър по име на артикула и група от радио бутони на категории атрикули (напр. безалкохолни, алкохолни коктейли и т.н.). Съдържа и TableLayout с възможност за страниране, който показва намерените артикули, отговарящи на зададения филтър. При кликване на конкретен артикул ще излиза Activity за поръчка на артикула, в което има снимка, име, допълнителна информация за него, текстово поле, в което да въведе брой и бутон за добавяне към поръчката с връщане към главното Activity. В главното Activity да има подходящ бутон за финализиране на поръчката, който да показва сметката дотук.

29

 

Да се създаде дизайн за мобилно приложение „Умен градски транспорт“. Да има необходимите Activities за потребителски логин, възстановяване на забравена парола и логин през акаунти на социални мрежи. Да има Activity с MapFragment, което да показва най-близките спирки до потребителя на картата и при кликване на конкретна спирка, да зарежда Activity, в което се показва разширена информация за тази спирка: Име, кои линии минават през нея, кои са най-скорошните линии, които ще минават и до колко минути ще дойдат. Информацията да се зарежда в подходящи скролируеми TableLayouts или ListViews.

30

 

Да се създаде дизайн за мобилно приложение „Агенция за недвижими имоти“.  Да има необходимите Activities за потребителски логин, възстановяване на забравена парола и логин през акаунти на социални мрежи. Да има Activity с MapFragment, което да показва най-близките недвижими имоти за продан до потребителя на картата и при кликване на конкретен имот, да зарежда Activity, в което се показва разширена информация за този имот: Име, метри до най-близката спирка на градския транспорт, колко квадрата, цена на квадрат, обща цена, снимки от имота (галерия със следните елементи: ImageView, бутон за Next и Previous ). Да има бутон „поръчай оглед“, за да може клиента да поръча оглед на този имот. Да има бутони за споделяне на конкретен имот в социални мрежи.

 


Обявления за извънредни занятия

 

 

 

 

 

 


 

За допълнителна информация и въпроси:

гл. ас. д-р инж. Георги Пашев;

e-mail: georgepashev (at) uni-plovdiv.bg;

 

 

 

 

 

 

 

 

 

Personalized Educational Paths through Self-Modifying Learning Objects

Personalized Educational Paths through Self-Modifying Learning Objects

George Pashev, George Totkov, Hristina Kostadinova, Hristo Indzhov

Abstract:

The paper presents a formal model for generation of personalized learning paths. The paths consist of self-modifying learning activities suitable for the achievement of course goals. The course goals (as defined by the teacher) are a list of functions/predicates with specific slots and include obligatory activities required for the automatized construction of learning paths. Further, the problems related to automatized learning path construction are identified and solved with the use of an original approach. The approach includes (but is not limited to): introduction of different points of view (aspects) for learning objects; automatized gathering/accumulation of metadata for learning activities; generation of personalized learning paths using set of student achievements, etc.
Key words: adaptive e-learning, generation of e-learning paths, self-modifying learning objects, automatized metadata gathering, revised Bloom taxonomy.

 

View article here.

Автоматизирано генериране на Адаптивен план за обучение

Автоматизирано генериране на Адаптивен план за обучение

Линк към публикацията:

http://www.subplovdiv.com/images/nauchni_trudove/2016_tehnika_i_technologii_tom_XIII.pdf (стр.181-186)

 

Автоматизирано генериране на персонализирани учебни пътища чрез аспекти в многомерни пространства

Автоматизирано генериране на персонализирани учебни пътища чрез аспекти в многомерни пространства

Линкове към публикацията:

https://www.dropbox.com/s/0kdru20v3ncplcr/template_ARIO%204.pdf?dl=0

 

Линк към публикацията в издание:

https://drive.google.com/file/d/0B2Sg-oFX9K4NMGhweTMxVTFLUUk/view?usp=sharing

Automated Assessment Through Integration of Heterogeneous Systems with a Workflow Engine

Title: Automated Assessment Through Integration of Heterogeneous Systems with a Workflow Engine
Authors: Pashev, George
Alendarova, Evgenia
Totkov, George
Keywords: работен процес
разнотипни системи
интеграция
портал
Issue Date: 28-May-2015
Publisher: Institute of Mathematics and Informatics Bulgarian Academy of Sciences, Association for the Development of the Information Society
Citation: Proceedings of the National Conference on "Education and Research in the Information Society", Plovdiv, May, 2015, 119p-128p
Series/Report no.: ADIS;2015
Abstract: The paper presents a method for integration of heterogeneous systems through workflows. Fundamental problems concerning the problem are reviewed and methodology is proposed. The suggested multilayer abstract architecture supports integration of heterogeneous systems with a workflow engine. We have created a custom workflow PHP framework, named Tiny Workflow Management PHP Framework (TinyWfFrm). Each state node in the workflow is logically connected to a web method in heterogeneous systems. A prototype containing work-flow definitions for student and teacher users is presented.
Description: Report published in the Proceedings of the National Conference on "Education and Research in the Information Society", Plovdiv, May, 2015
URI: http://hdl.handle.net/10525/2450
ISSN: 1314-0752
Appears in Collections: ADIS 2015

TinyWf Система за изпълнение на уеб работни потоци

На Вашето внимание представям един от моите проекти: TinyWf: система за олекотено изпълнение на уеб работни потоци. Тя е базирана на PHP 5. За момента работните потоци се описват в конфигурационни Структури от данни в PHP. Предвижда се допълнително развитие: графичен интерфейс за визуално създаване на работен поток. Парадигмата, която се поддържа е максимално обща: "потоково програмиране", което позволява излизане отвъд прекалено стандартизирани и детерминирани стандарти за работни потоци като BPMN и следователно: по-голяма гъвкавост.

 

Публикации, свързани с TinyWf:

https://www.dropbox.com/s/zf52gv9ckeqpcsb/TinyWf.pdf?dl=0

https://www.dropbox.com/s/sbp1pomf5w3x6h2/Presentation_student_taxes_08.pdf?dl=0

 

Среда за управление на работните потоци EMS и Програмен Език и парадигма

 

Г. Пашев, Среда за управление на работните потоци EMS и Програмен Език и парадигма, Конференция на СУБ - Пловдив, Пловдив, 2014 (в печат)

 

Линк към публикацията:

http://www.subplovdiv.com/images/nauchni_trudove/2015_tehnika_i_tehnologii_tom_XII.pdf (стр. 223-226)

Автоматизирани C++ компилация, изпълнение и оценяване на решението на базата на сравнение на изходите

 

  • Г. Пашев, Автоматизирани C++ компилация, изпълнение и оценяване на решението на базата на сравнение на изходите, Конференция на СУБ - Пловдив, Пловдив, 2014 (в печат)

 

Линк към публикацията:

http://www.subplovdiv.com/images/nauchni_trudove/2015_tehnika_i_tehnologii_tom_XII.pdf (стр. 219-222)

Интегриране на функционалности от разнотипни системи в Moodle

Интегриране на функционалности от разнотипни системи
в Moodle

Георги Пашев, Александър Трайков, Евгения Алендарова,
Георги Тотков

Пловдивски Университет „Паисий Хилендарски“

 

Разгледани са възможности за интеграция на функционалности от разнотипни системи за целите на е-обучението. В работата се предлага подход за интеграция и се представя решение, базирано на авторски модул за моделиране и изпълнение на работни процеси, система за централизирано управление на потребителски роли и активна директория. Подходът е експериментиран с интеграция на университетска информационна система (в частта за управление на студентските данни), Jasper (за генериране на справки) и Moodle (за виртуално обучение).

Линк към публикацията:

http://www.subplovdiv.com/images/nauchni_trudove/2015_mladi_ucheni_estestveni_LQ.pdf (стр. 161-164)

Учебни материали по Въведение в компютърните науки

Здравейте, колеги. Тук си направих труда да извадя линк към учебни материали, които можете да сваляте свободно и безплатно и легално по дисциплината: Въведение в компютърните науки.

 

Те съдържат:

- решени задачи на упражнения

- записки от лекции, презентации

-други учебни материали

Можете да свалите учебните материали от тук.

 

Списък с учебници, които можете да търсите допълнително:

Тодорова М, Програмиране на C++, част 1., Сиела

Davis Stephen, C++ for Dummies

Wang Wallace, Beginning Programming for Dummies

Lajole Hose, C++ Primer

Различни учебници за 10. клас

за напреднали:

Тодорова М, Програмиране на C++, част 2., Сиела

Майерс Скот, По-ефективен C++: 35 нови начина да подобрите своите програми и проекти

Willemer Arnold, Coding for Fun mit C++ (Galileo Computing) (само на немски език)

Наков Преслав, Програмиране = ++ Алгоритми

 

 

 

За въпроси:

инж. Г. Пашев, e-mail: georgepashev@gmail.com

 

Размисли за бъдещето на браузърите

Бъдещето на браузърите.
За да бъде новият браузър смислен, трябва в него да има нещо уникално и ново, та да може да отмъкне дял от другите. Chrome е уникален в бързината си на работа и поради факта, че за доста неща разчита на огромния гръбнак от сървъри на Google, понеже така или иначе е тяхна собственост. Значи, трябва ти и огромен гръбнак от сървъри, но понеже туй няма как да стане, затуй може да се мисли за техна алтернатива: някакъв p2p протокол, подобен на торентите, чиято цел е да замести работата, която многото сървъри на google биха свършили: например кеширане на сайтове, кеширане на история на търсене, определяне на близост между потребители и персонализиране на резултати за търсене, подсказки за търсене и т.н. Според мен, обаче, все повече ще се засилва клауд елемента: т.е: тенденцията вече ще бъде операционната ти система да не бъде на локалния компютър, а на виртуален компютър в клауда, а локалната ти станция само ще съдържа съвсем олекотен линукс, чиято основна цел е да зареди основната операционна система от виртуалния компютър в клауда. Тогава има голяма вероятност да има голяма необходимост от браузъри, които са оптимизирани за отдалечено зареждане на уеб базирани операционни системи. Така, че според мен, който работи в тая насока, може и да направи удар при браузърите, независимо в коя държава се намира. Използване на браузър като входна точка към твоя операционна система в клауда: това е част от бъдещето на браузърите. Другото, което ще бъде тенденция, според мен е и появата на т.нар. мулти-браузъри: т.е такива браузъри, които да поддържат не само стандартни протоколи като http, ftp, но и такива протоколи, които засега са били смятани за не - уеб съвместими: например: скайп, торенти, winamp и документни поддръжки. Последното и сега се поддържа с инсталиране на плъгини, с които можеш да разглеждаш pdf, docx и др. файлове директно в браузъра, но в бъдещите браузъри това ще бъде вградено и няма да има нужда да се слагат плъгини. Дори може да се интегрира в http протокола. Представете си да имаш браузър, в който в единия таб ти е пуснат скайпа, в другия таб киснеш във фейсбук, в третия таб си пуснал winamp канал (например Venice Classic Radio), в четвъртия таб теглиш торенти, а ако си програмист, в петия таб си пуснал някаква интегрирана с браузъра среда за разработка на c++ приложение, а на шестия таб даже си стартирал една отдалечена конзола, с която управляваш нещо в ОСто ти в клауда. Ето за такова нещо говоря: браузъра да започне да върши работа едва ли не за всичко. Вариантите за това са два: или различни системи предлагат своя версия за сегашния уеб, или уеб да се пригоди за тях чрез браузър, който да ги поддържа. Кой да има тази инициатива? Според мен е по-логично браузърът да има инициативата да се развива и да предлага по-голямо разнообразие от разширения на http за комуникация. Другата тенденция, която определено ще я има е и вграждането в http и използването на периферни устройства за виртуална реалност като google glass например. Дори вече се говори за разработване на javascript api-та за това. В един момент сайтовете ще се считат за остаряли, ако не поддържат някои неща за google glass или виртуална реалност като цяло.